【发布时间】:2014-05-16 20:17:36
【问题描述】:
我需要实现一个可选标志,比如-f/--flag。由于这是一个标志,因此没有关联的值。在我的代码中,我只需要知道是否设置了标志。使用 boost::program_options 的正确方法是什么?
【问题讨论】:
标签: c++ boost boost-program-options
我需要实现一个可选标志,比如-f/--flag。由于这是一个标志,因此没有关联的值。在我的代码中,我只需要知道是否设置了标志。使用 boost::program_options 的正确方法是什么?
【问题讨论】:
标签: c++ boost boost-program-options
一个方便的方法是使用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
}
这比手动检查字符串更安全(字符串在整个定义中只使用一次)。
【讨论】:
照常使用,但没有任何价值:
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 选项帮助为例。
【讨论】: