在boost::program_options
库中,我无法理解如何允许用户通过add_options()
.
我希望它被忽略,而不是终止程序。
问问题
3070 次
2 回答
11
今晚我遇到了同样的问题。@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()
)。
于 2016-03-23T02:56:33.250 回答
10
来自 boost::program_options 文档How To: Allowing Unknown Options
parsed_options parsed =
command_line_parser(argc, argv).options(desc).allow_unregistered().run();
于 2013-03-21T18:22:44.273 回答