【发布时间】:2013-03-21 15:55:21
【问题描述】:
在boost::program_options库中,我无法理解如何允许用户通过add_options()传递一个尚未添加的参数。
我希望它被忽略,而不是终止程序。
【问题讨论】:
标签: c++ boost boost-program-options
在boost::program_options库中,我无法理解如何允许用户通过add_options()传递一个尚未添加的参数。
我希望它被忽略,而不是终止程序。
【问题讨论】:
标签: c++ boost boost-program-options
今晚我遇到了同样的问题。 @TAS 的回答让我走上了正确的道路,但仍然需要 20 分钟的时间来弄清楚我的特定用例的确切语法。
忽略未知选项,而不是这样写:
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
这是我写的:
po::variables_map vm;
po::store(po::command_line_parser(argc, argv).options(desc).allow_unregistered().run(), vm);
po::notify(vm);
注意只有中间行不同。
简而言之,使用commandline_parser() 而不是parse_commandline(),并在调用后添加一些“dangly bits”(即.options(desc).allow_unregistered().run())。
【讨论】:
来自 boost::program_options 文档How To: Allowing Unknown Options
parsed_options parsed =
command_line_parser(argc, argv).options(desc).allow_unregistered().run();
【讨论】: