Мне нужно реализовать необязательный флаг, скажем -f
/--flag
. Поскольку это флаг, связанное значение не имеет. В моем коде мне нужно только знать, был ли установлен флаг или нет. Каков правильный способ сделать это с помощью boost:: program_options?
Как использовать boost:: program_options для принятия необязательного флага?
Ответ 1
Удобный способ сделать это с помощью функции 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
}
Это безопаснее, чем ручная проверка строки (строка используется только один раз во всем определении).
Ответ 2
Используйте его как обычно, но без какого-либо значения:
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
}
Смотрите пример справки по началу работы.