代码之家  ›  专栏  ›  技术社区  ›  Paul Wicks asgeo1

选择C/C++的Parsers?[复制]

  •  12
  • Paul Wicks asgeo1  · 技术社区  · 15 年前

    可能重复:
    What parameter parser libraries are there for C++?

    我做了一些研究,有很多库用于命令行选项解析,但是很难区分它们。有没有人对他们有任何经验?一个比其他任何一个都难/好/快/容易/怎样?还是我自己种?

    6 回复  |  直到 7 年前
        1
  •  18
  •   Head Geek    15 年前

    如果你想要完全跨平台的东西,我找到了 Boost::Program_Options 图书馆很好。设置它有点像学习曲线,但一旦你掌握了它,它会大大简化事情。

        2
  •  13
  •   Community paulsm4    7 年前

    在许多方面,GNU getopt() getopt_long() 功能是不错的选择。

    getopt() 用于单字母选项参数,并且hew相当接近POSIX标准行为,并且可以通过设置正确的环境变量POSIXLY_来说服其行为更加正统。不同的是GNU 识别第一个非选项参数之后的选项参数,并对参数进行置换,以便所有选项参数都在任何非选项参数之前处理。这有时很重要-尽管上下文往往有点深奥。还有一些其他的技巧可用。

    GNU公司 是处理诸如 --help

    您可以在 What is the general syntax of a Unix shell command . 您还可以在中阅读命令行约定的POSIX规范 Utility Conventions

        3
  •  6
  •   sth    15 年前

    boost::program_options 非常好,并且有一个很好的C++接口,可以检查选项参数是否具有某种类型(比如‘int’),并将它们直接存储到变量中。

        4
  •  2
  •   vitaly.v.ch    15 年前

    还有波普。

        5
  •  1
  •   serioys sam    15 年前

    getopt公司

        6
  •  1
  •   Tim Post Samir J M Araujo    15 年前

    我在大多数情况下都使用getopt_long()的系统实现,但是您可能需要更易于移植,这会禁止使用这种POSIX生物舒适性。

    Here is the standard 关于命令行选项的POSIX视图,如果您处于getopt()/getopt_long()不可用的位置,需要自己运行。您可能还想看看POSIX对help/option summary显示有什么看法(我现在还找不到到到标准部分的链接)。

    就个人而言,我不喜欢使用不接受长选项的程序,因为记住短选项是一件痛苦的事,没有两个程序使用相同的选项。