在 boost::program_options
库中,我无法理解如何让用户传递一个未通过 add_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()
,带有一些“悬空位”(即 .options(desc).allow_unregistered ().run()
) 在调用之后添加。
关于c++ - boost::program_options:如何忽略未知参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552284/