【发布时间】:2017-01-20 01:24:42
【问题描述】:
下面的代码使用po::bool_switch(&flag),希望自动将正确的值分配给flag。
我的编译命令是clang++ -std=c++11 test.cpp -o test -lboost_program_options
所以我用./test -h 运行程序,它没有显示任何帮助消息。
为什么会这样?
#include <iostream>
#include <boost/program_options.hpp>
namespace
{
namespace po = boost::program_options;
}
int main(int ac, char ** av)
{
bool flag;
po::options_description help("Help options");
help.add_options()
( "help,h"
, po::bool_switch(&flag)->default_value(false)
, "produce this help message" );
po::variables_map vm;
po::parsed_options parsed
= po::parse_command_line(ac,av,help);
po::store(po::parse_command_line(ac,av,help),vm);
if (flag)
{
std::cout << help;
}
po::notify(vm);
return 0;
}
【问题讨论】:
-
notify不负责将值存储到变量中吗?如果在if (flag)之前,您可以移动一下,看看它是否能纠正这种行为? -
是的,那是我的错。非常感谢
-
我已经通过文档链接将其作为答案。
标签: c++ c++11 boost boost-program-options