【问题标题】:How to avoid errors from inexistent arguments in boost::program_options?如何避免 boost::program_options 中不存在的参数导致的错误?
【发布时间】:2012-11-05 17:26:28
【问题描述】:

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

  1. 使用一些选项配置 boost::program_options
  2. 匹配选项
  3. 使用匹配的选项初始化子组件
  4. 子组件构造函数声明更多选项
  5. 再次匹配选项以配置组件

所以,在执行的某个时刻(2),我只声明了一些选项,但程序实际上是用它们的全部集合(包括将在 3 中声明的那些)调用的,导致unrecognised option '...' 错误的数量。我可以抓住那些,但解析无论如何都会停止。我尝试使用多个options_description 组来处理这个问题,我还研究了命令行样式(style_t)以查看其中一个是否允许忽略不匹配的参数。你还有什么想法吗?

谢谢

【问题讨论】:

    标签: boost command-line


    【解决方案1】:

    问题已解决,很抱歉打扰您,但这对某人来说可能会派上用场。而不是使用parse_command_line

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

    在调用allow_unregistered后显式调用command_line_parserrun方法

    auto parsed = command_line_parser(argc, argv).options(opts).allow_unregistered().run();
    

    【讨论】:

      猜你喜欢
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2014-12-18
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      相关资源
      最近更新 更多