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

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

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

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

出于许多目的,GNU getopt()getopt_long()函数是不错的选择。

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

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

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

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

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

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

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

也有popt。

如果您使用的是linux / unix,则getopt是您的选项解析器。 适用于几乎所有类型的unix,易于使用

我对大多数事情使用getopt_long()的系统实现,但是你可能需要更加便携,这禁止使用这种POSIX生物的舒适。

以下是关于命令行选项的POSIX视图的标准 ,如果您处于getopt()/ getopt_long()不可用且需要自己滚动的位置。 您可能还想了解一下POSIX对帮助/选项摘要显示的看法(我无法找到指向该部分标准的链接)。

就个人而言,我不喜欢使用不带–long-options的程序,因为记住短选项是一种痛苦,没有两个程序使用相同的选项。