这是一个关于 C/C++ 命令行解析器的问题。
我使用了 glib 和 Boost 中提供的命令行解析器,但我发现它们并不令人满意。我有两个特殊要求:
一个键后有多个值,这样我就可以像这样在命令行上使用文件 glob:
my_program --input dir/*.txt
自定义值类型,像这样:
typedef enum { FORMAT_A, FORMAT_B, FORMAT_C } InputFormat; InputFormat option_format;
我希望我的用户可以在命令行 --format format_a
中指定格式。解析器需要允许自定义回调函数识别字符串值并设置枚举值。
boost 似乎支持1 但不支持2。它只允许您定义一个额外的解析器,一个一个地遍历 token ,而不是 KV 对。而glib 支持2 但不支持1。它只允许多次调用,如 --input foo --input bar
。
还有支持1 和2 的库吗?或者关于高级使用 glib 或 boost 以实现 1 和 2 的任何建议?
最佳答案
Boost 实际上可以处理要求 2。您需要创建自己的 value_semantic
子级使用适当的解析器并将其实例传递给 add_options
而不是使用典型的 value<int>()
机制。
关于c++ - 需要一个命令行解析器来满足我的要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17835369/