C/C++的选项解析器?

Pau*_*cks 12 c c++ command-line parsing option

可能重复:
C++有哪些参数解析器库?

我已经做了一些寻找,并且有很多用于命令行选项解析的库,但很难区分它们.有没有人有任何经验?是否比其他任何人更难/更好/更快/更容易/更好?或者我应该自己成长?

Hea*_*eek 18

如果你想要一些完全跨平台的东西,我发现Boost :: Program_Options库非常好.设置它有一些学习曲线,但是一旦掌握了它,它就会大大简化事情.


Jon*_*ler 13

出于许多目的,GNU getopt()getopt_long()函数是很好的选择.

GNU getopt()用于单字母选项参数,并且非常接近POSIX标准行为,并且可以通过设置环境变量POSIXLY_CORRECT来说服其表现得更正统.区别在于GNU getopt()在第一个非选项参数之后识别选项参数,并置换参数,以便在任何非选项参数之前处理所有选项参数.这有时很重要 - 尽管背景往往有点深奥.还有一些额外的技巧可用.

GNU getopt_long()是处理诸如的长期选项的最佳机制--help.它可以处理可选参数,匹配单字母选项和各种事物.

还有许多其他可用的包以各种方式处理选项.

(Perl拥有大量的Getopt模块,反映了多年来投入了多少精力.)

您可能会在Unix shell命令的一般语法中找到一些有用的额外信息.您还可以在" 实用程序约定"一章中阅读命令行约定的POSIX规范.

  • 是的-这些天至少是LGPL。它曾经是完整的GPL。您可以获取非GNU版本的getopt()。例如,AT&T早就在UseNet上发布了源代码。 (2认同)
  • POSIX [实用程序约定](http://www.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html)章节中详细说明了POSIX实用程序的工作原理. (2认同)

sth*_*sth 6

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

它还支持从配置文件加载"选项",因此您可以免费获得配置文件解析器.这样,您可以非常轻松地允许从命令行覆盖所有配置设置,或者将所有命令行选项添加到配置文件中,这使其非常灵活.


ser*_*sam 1

如果您使用的是 linux/unix 那么getopt是适合您的选项解析器。适用于几乎所有版本的 UNIX 并且易于使用