最近在Linux上开发C++程序时,通过int main(int argc,char[] argv)通过命令行参数的方式向程序传参时真的很难用,这个时候就非常怀念python的argparse命令行参数解析包,那C++有没有类似的命令行参数解析库呢?大致了解下,发现真的有。所以本文将例举下C++中简单易用的命令行参数解析工具库。

1 gflags

Github:https://github.com/gflags/gflags

gflags是Google推出的命令行参数解析工具。不是header-only,需要编译,学习成本较高。

关于gflags的使用示例可参考:https://gohalo.me/post/package-gflags-usage.html

2 Boost Program Options

主页:https://www.boost.org/doc/libs/1_63_0/doc/html/program_options.html

依赖于Boost,如果你现在的项目已经依赖于Boost,可以尝试使用这个库。

3 getopt

Unix-like 系统下 C/C++ 程序的标准命令参数解析库。提供C风格的命令行参数解析功能,但是语法复杂且不易用,对有些功能的支持不是很完善,但是在Unix-like系统都可用。

4 cmdline

Github:https://github.com/tanakh/cmdline

cmdline是一个header-only的命令行参数解析工具,非常的轻量并且功能强大。

5 CLI11

Github:https://github.com/CLIUtils/CLI11

CLI11是一个header-only的命令行参数解析工具。

6 cxxopts

Github:https://github.com/jarro2783/cxxopts

cxxopts是一个header-only的命令行参数解析工具,需要正则表达式支持,在GCC4.8(Centos 7)需要升级GCC与G++版本。

7 argparse

名字和python的命令行参数解析库一样哈,哈哈哈。

Github:https://github.com/p-ranav/argparse

argpars是基于C++17的header-ongly的命令行参数解析库。

8 其他的命令行参数解析库

如果对上述介绍的库都觉得不合适,那么可以参考以下链接寻找更加适合你的命令行参数解析库: