简易命令行参数解析工具介绍

在软件开发过程中,命令行参数的解析是一个常见的需求。一个优秀的参数解析工具可以极大地简化这一过程。本文介绍的是一个简单易用的命令行参数解析工具,它支持带参数的选项、可选参数,并能自动输出错误信息和简短手册。该工具使用STL,并且符合Unicode标准。

工具的文档、源代码、静态库构建文件和测试应用程序的源代码都包含在Arguments_src.zip文件中。以下是一个简单的示例代码,足以让对它产生兴趣:

#include "Arguments.h" void main(int argc, char *argv[]) { Arguments cArg("argtest", "(C) 2001 NOVACOM GmbH", "-/"); // 添加一个简单的选项,例如"-h"来获取手册 cArg.AddOption('h', "显示使用帮助"); // 定义一个参数"2",稍显复杂,因为现在想要为选项添加一个参数 Arguments::Option cOpt('2', "定义额外的输入文件"); cOpt.AddArgument("outfile2", "额外的输入文件名"); cArg.AddOption(cOpt); // 定义参数 cArg.AddArgument("infile", "要读取的文件名"); // 可以为参数设置默认值,使其成为可选参数 cArg.AddArgument("outfile", "输出文件名", "stdout"); // 定义完选项和参数后,可以指示Arguments实例解析命令行 if (!cArg.Parse(argc, argv)) exit(-1); // 请求一个选项(例如"-h"选项) if (cArg['h']) { cArg.Usage(); exit(0); } // 对于"-2"选项,也可以通过[]获取该选项的参数 if (cArg['2']) cout << "选项-2已设置,outfile2 = " << cArg['2']['outfile2'] << endl; else cout << "选项-2未设置" << endl; // 请求参数没有太大区别 cout << "infile = " << cArg["infile"] << endl; }

以上代码展示了如何使用该工具来定义和解析命令行参数。首先,创建了一个Arguments实例,提供了应用程序的名称、版权声明和可能的选项标记符。然后,添加了一个简单的选项"-h",用于获取使用帮助。接着,定义了一个参数"2",并为其添加了一个额外的参数"outfile2"。

还定义了两个参数"infile"和"outfile",其中"outfile"是一个可选参数,并且为其设置了一个默认值"stdout"。在定义完所有选项和参数后,指示Arguments实例解析命令行。如果解析失败,程序将退出。

如果用户请求了"-h"选项,程序将输出使用帮助并退出。对于"-2"选项,可以通过[]操作符获取该选项的参数。最后,请求并输出了"infile"参数的值。

这个工具的手册输出如下:

Usage: argtest [-2 outfile2] [-h] infile [outfile] Options: -2 定义额外的输入文件 outfile2 = 额外的输入文件名 -h 显示使用帮助 Arguments: infile = 要读取的文件名 outfile = 输出文件名 可选参数 ( 默认值 = ' stdout' )
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485