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

标签 c++ boost boost-program-options

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/

相关文章:

c++ - 使用 Boost,如何在类层次结构更改后反序列化 C++ 类

c++ - 对于我的关键代码部分,如何在短时间内关闭操作系统中切换线程的中断?

c++ - 正确使用具有用户定义类型的 std::vector.push_back()

c++ - 通过动态链接和手动设置 boost 单元测试框架

c++ - 更好地处理 boost::program_options 中丢失/错误的键

boost-program-options - 如何自动将简单标志的值存储到变量中?

c++ - Makefile 在不同的步骤中处理不同的文件

C++函数调用顺序(boost)——困惑

c++ - boost 文件系统 : recursive_directory_iterator constructor causes SIGTRAPS and debug problems

c++ - 使用 boost::program_options 指定多个标志