繁体   English   中英

boost :: program_options:如何忽略未知参数?

[英]boost::program_options: how to ignore unknown parameters?

boost::program_options库中,我无法理解如何允许用户传递一个尚未通过add_options()添加的参数。
我希望它被忽略,而不是终止程序。

来自boost :: program_options文档如何:允许未知选项

parsed_options parsed = 
    command_line_parser(argc, argv).options(desc).allow_unregistered().run();      

今晚我遇到了同样的问题。 @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() ,在调用之后添加一些“ parse_commandline() bits”(即.options(desc).allow_unregistered().run() )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM