我需要实现一个可选标记,例如-f
/ --flag
。由于这是一个标志,因此没有关联的值。在我的代码中,我只需要知道标志是否已设置。使用boost :: program_options执行此操作的正确方法是什么?
答案 0 :(得分:27)
执行此操作的便捷方法是使用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
}
这比手动检查字符串更安全(字符串仅在整个定义中使用一次)。
答案 1 :(得分:6)
像往常一样使用它但没有任何价值:
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
}
请参阅Getting Started选项帮助作为示例。