需要一个命令行解析器来满足我的要求

时间:2013-07-24 13:25:31

标签: c++ command-line-arguments glib boost-program-options

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

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

  1. 一个键后面的多个值,因此我可以在命令行上使用文件glob,如下所示:

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

    typedef enum { FORMAT_A, FORMAT_B, FORMAT_C } InputFormat;
    InputFormat option_format;
    
  3. 我希望我的用户可以在命令行--format format_a中指定格式。解析器需要允许自定义回调函数来识别字符串值并设置枚举值。

    似乎提升支持 1 但不支持 2 。它只允许您定义一个逐个遍历标记的附加解析器,而不是KV对。 glib 支持 2 ,但不支持 1 。它只允许多次调用--input foo --input bar

    是否支持 1 2 的lib?或者有关高级使用 glib 提升的任何建议,以实现 1 2

1 个答案:

答案 0 :(得分:1)

Boost实际上可以处理需求2.您需要使用适当的解析器创建自己的value_semantic子项,并将其实例传递给add_options而不是使用典型的{{1}机制。