【问题标题】:Arguments without dashes using boost::program_options使用 boost::program_options 的不带破折号的参数
【发布时间】:2019-04-22 20:42:09
【问题描述】:

我正在编写现有软件的新实现(洁净室实现,因此无法访问旧代码)以及新的命令行界面,我需要模拟旧界面以与现有工作流程兼容。我根据调用可执行文件的名称(例如busybox)在新旧界面之间进行选择。

旧的命令行界面基本上使用键值对,但没有任何“-”或“=”字符。例如

./oldcode Key1 value1 Key2 value2 Key3 value3 ...

我已经在使用 boost,所以如果可以的话,我想坚持使用 program_options。最简单的方法是简单地解析选项而不需要在参数的开头加上“--”,但我看不到这样做的方法。

这对于 program_options 是否可行,或者我最好为此编写一个自定义解析器?

【问题讨论】:

  • “但我看不到这样做的方法” ...main( int argc, char* argv[]) 已经为您提供了所需的一切。 argv[1] 是第一个键,argv[2] 第一个值,argv[3] 第二个键等等。
  • 那么自然,但正如我所说,我想使用program_options 是可能的。除了自动生成使用消息外,它还让事情变得更容易,只有一个接口可以从中获取我的配置。
  • 当然,但是您必须使用标准格式的程序参数。我看到的唯一可能性是将获得的所有参数作为位置参数存储在向量中,然后从该向量中获取键值对。

标签: c++ boost boost-program-options


【解决方案1】:

您必须为它编写一个自定义解析器,这并不难 :) 尤其是当你发现什么时。

boost 机制除了键值对的 = sing。

如果您不想自己编写,请使用现有代码: https://github.com/jarro2783/cxxopts

【讨论】:

    猜你喜欢
    • 2011-01-14
    • 2012-07-15
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多