不带破折号的参数使用 boost::program_options

Arguments without dashes using boost::program_options

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

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

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

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

这对 program_options 可行吗?还是我最好为此编写一个自定义解析器?

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

boost 机制不包括键值对的 = sing。

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