usar tipos referencia por paso parametros linea lenguaje funciones ejemplos con como comandos c++ boost boost-program-options

c++ - tipos - ¿Cómo obtengo los valores de argumento predeterminados con las opciones del programa boost?



paso de parametros en c++ (1)

program_options asigna automáticamente valores predeterminados a las opciones cuando el usuario no proporciona esas opciones. Ni siquiera necesita verificar si el usuario proporcionó una opción determinada, simplemente use la misma asignación en cualquier caso.

#include <iostream> #include <boost/program_options.hpp> namespace po = boost::program_options; int main (int argc, char* argv[]) { po::options_description desc("Usage"); desc.add_options() ("robots", po::value<int>()->default_value(3), "How many robots do you want to send on a murderous rampage?"); po::variables_map opts; po::store(po::parse_command_line(argc, argv, desc), opts); try { po::notify(opts); } catch (std::exception& e) { std::cerr << "Error: " << e.what() << "/n"; return 1; } int nRobots = opts["robots"].as<int>(); // automatically assigns default when option not supplied by user!! std::cout << nRobots << " robots have begun the silicon revolution" << std::endl; return 0; }

Quiero usar valores predeterminados para algunos de mis argumentos de línea de comandos. ¿Cómo le digo a program_options cuál es la opción predeterminada y, si el usuario no proporciona el argumento, cómo le digo a mi programa que use el valor predeterminado ?

Digamos que quiero tener un argumento que especifique el número de robots para enviar en un alboroto asesino con un valor predeterminado de 3.

robotkill --robots 5 producirían 5 robots have begun the silicon revolution , mientras que el robotkill (sin argumentos proporcionados) produciría 3 robots have begun the silicon revolution .