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
.