c++ - ¿Cómo usar boost:: program_options para aceptar una marca opcional?
boost-program-options (2)
Úsalo como siempre pero sin ningún valor:
boost::program_options::options_description od("allowed options");
od.add_options()
("flag,f", "description");
po::variables_map vm;
// store/ notify vm
if (vm.count("flag")) {
// flag is set
}
Vea la ayuda de la opción de Comenzar como ejemplo.
Necesito implementar un indicador opcional, digamos -f
/ --flag
. Dado que esta es una bandera, no hay ningún valor asociado. En mi código solo necesito saber si el indicador fue establecido o no. ¿Cuál es la forma correcta de hacerlo usando boost :: program_options?
Una forma conveniente de hacer esto es con la funcionalidad bool_switch
:
bool flag = false;
namespace po = boost::program_options;
po::options_description desc("options");
desc.add_options()
("flag,f", po::bool_switch(&flag), "description");
po::variables_map vm;
//store & notify
if (flag) {
// do stuff
}
Esto es más seguro que la comprobación manual de la cadena (cadena utilizada solo una vez en toda la definición).