c++ boost boost-program-options

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).