3

这是一个关于 C/C++ 命令行解析器的问题。

我使用了glibBoost中提供的命令行解析器,但我发现它们并不令人满意。我有两个特殊要求:

  1. 一个键后有多个值,这样我就可以在命令行上使用文件 glob,如下所示:

    my_program --input dir/*.txt
    
  2. 自定义值类型,如下所示:

    typedef enum { FORMAT_A, FORMAT_B, FORMAT_C } InputFormat;
    InputFormat option_format;
    

我希望我的用户可以在命令行中指定格式--format format_a。解析器需要允许自定义回调函数识别字符串值并设置枚举值。

似乎boost支持1但不支持2。它只允许您定义一个额外的解析器来逐个遍历令牌,而不是通过 KV 对。glib支持2但不支持1。它只允许多次调用,例如.--input foo --input bar

还有更多同时支持12的库吗?或者关于高级使用glibboost以实现12的任何建议?

4

1 回答 1

1

Boost 实际上可以处理需求 2。您需要value_semantic使用适当的解析器创建自己的子节点,并将其实例传递给add_options而不是使用典型value<int>()机制。

于 2013-07-24T14:06:25.010 回答