如何使用boost :: program_options接受可选标志?

时间:2014-05-16 20:17:36

标签: c++ boost boost-program-options

我需要实现一个可选标记,例如-f / --flag。由于这是一个标志,因此没有关联的值。在我的代码中,我只需要知道标志是否已设置。使用boost :: program_options执行此操作的正确方法是什么?

2 个答案:

答案 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选项帮助作为示例。