如何避免boost :: program_options中不存在的参数出错?

时间:2012-11-05 09:20:42

标签: boost command-line

我遇到boost::program_options的问题。我有一个由几个子组件组成的软件,每个子组件都可以声明一些在命令行上传递的选项。我想坚持以下流程:

  1. 使用一些选项配置boost :: program_options
  2. 匹配选项
  3. 使用匹配的选项初始化子组件
  4. 子组件构造函数声明更多选项
  5. 再次匹配选项以配置组件
  6. 所以,在某个执行的瞬间(2),我只声明了许多选项,但是程序实际上是用它们的整个集合调用的(包括将在3中声明的那些),导致unrecognised option '...'个错误的数量。我可以抓住那些,但无论如何解析都会停止。我尝试使用多个options_description组处理它,我还研究了命令行样式(style_t)以查看其中一个是否允许忽略不匹配的参数。你有更多的想法吗?

    由于

1 个答案:

答案 0 :(得分:1)

问题解决了,抱歉让你烦恼,但这对某人来说可能会派上用场。而不是使用parse_command_line

auto parsed = parse_command_line(argc, argv, opts);

在调用command_line_parser

后明确调用run的{​​{1}}方法
allow_unregistered