http://blog.csdn.net/renyhui/article/details/19112315
什么是命令行参数:在命令行中给定的参数就是命令行参数。(即从输入位置角度理解)
命令行参数的作用:让我们可以在程序之外控制程序,例如linux或者dos中我们经常使用的命令,从本质上来说就是一个程序;而我们使用的参数,就是该命令(对应的程序)的命令行参数。
在C语言中带参数的main()函数的命名形式int main(int argc, _TCHAR* argv[]){ return 0; }
第一个参数的值(习惯上写为argc)表示程序运行时,命令行参数的个数
第二个参数的值(习惯上写为*argv[])表示指向字符串数组的指针,每个字符串对应一个参数
在c或c++中的示例:
1 2 3 4 5 6 7 |
int main(int argc, char* argv[]) { cout << "argc = " << argc << endl; for (int i = 0; i<argc; i++) cout <<"argv["<<i<<"] = "<< argv[i] << endl; return 0; } |
argv[0]表示输入程序的路径及名称
argv[1],argv[2]…表示自己输入的参数
argc用来统计参数的个数,因为路径为默认的参数,所以argc至少为1
_tmain(int argc, _TCHAR* argv[]) 示例:
1 2 3 4 5 6 7 8 9 |
int _tmain(int argc, _TCHAR* argv[]) { cout << argc << endl; for (int i = 0; i < argc; i++) { cout << argv[i] << endl; } return 0; } |
输出的是一串数字而非我们想要的路径,这是因为_TCHAR的声明:typedef wchar_t _TCHAR
在Unicode中_TCHAR被认为是宽字符,输出宽字符时我们要使用wcout进行输出,输出结果为:
又遇到问题了,好像是无法输出中文,如何输出中文,点击打开链接
只需要加一句话:wcout.imbue(std::locale(“chs”));
代码示例:
1 2 3 4 5 6 7 8 9 10 |
int _tmain(int argc, _TCHAR* argv[]) { wcout.imbue(std::locale("chs"));// //设置语言区域为中国 wcout << argc << endl; for (int i = 0; i < argc; i++) { wcout << "argv[" << i << "]=" << argv[i] << endl; } return 0; } |