C++处理命令行选项

去年写了个小程序,把qq围棋的wgs格式的棋谱转换为sgf格式,当时直接是cin文件路径,wgs那么变态的文件名,每次转换前都要先重命名才方便转换。还有一点,有很多棋谱要转时不方便,得一个个的输入。想到linux上很多工具,一般都是接收选项和参数的,可以用通配符匹配所有同类型文件,很是方便,于是查了些资料,发现实现起来其实很简单。

这里用到了main()函数的命令行处理选项,C/C++语言中有关命令行参数涉及到程序的主函数main(int argc,char *argv[])这样两个参数,其中int argc表示命令行参数的个数(包括可执行程序名本身),char *argv[]表示每个参数的具体内容,argv[0]为命令行中可执行程序名本身,argv[1]为命令行中第二个参数的内容,依次类推。(表示很早就看到过这两个参数,可是一直不明白意思,C++ Primer 7.2.6节介绍了处理命令行选项的内容。)

输出命令行参数个数及参数内容的例程:

执行结果:

在命令行参数的提交中,系统会自动给指针数组后加上一个NULL,所以上面的代码可以写成如下简单形式,简化代码提高效率。(1)

棋谱转换程序下篇博文发出,这里只发一下使用通配符转换的log:

 

下面摘录一个例程,该程序用于取出在argv中的命令行选项。在例子中,将支持下列用法:

program_name [-d] [-h] [-v] [-o output_file] [-l limit_value] file_name [file_name [file_name [...]]]。

加括号的内容是可选的。具体步骤见程序:(2)

 

参考资料:

(1).C/C++中命令行参数,http://hi.baidu.com/xun1573/item/76af410956754933a2332a66

(2).C++ main():处理命令行选项,http://www.cnblogs.com/xiajun/archive/2011/08/24/2298651.html

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注