C++ 命令行参数
如果我们编写了一个在屏幕上输出文本文件内容的程序,编译生成的可执行文件是
listfile.exe,那么,很可能我们希望该程序的用法是,在Windows 的控制台窗口(也叫
DOS 命令窗口)中输入:
listfile 文件名
然后敲回车,就能启动listfile 程序,并将“文件名”所指定的文件的内容输出。比
如敲“listfile file1.txt”,就能将file1.txt 这个文件的内容输出。
要做到这一点,显然,listfile 程序必须知道用户输入的那个文件名。我们将用户在
DOS 窗口输入可执行文件名的方式启动程序时,跟在可执行文件名后面的那些字符串,称为
“命令行参数”。比如上例中的“file1.txt”,就是一个命令行参数。命令行参数可以有
多个,以空格分隔。比如“listfile file1.txt file2.txt”。
在程序中如何知道用户输入的命令行参数呢? 要做到这一点,main 函数的写法须和以
往的不同,要增加两个参数:
int main(int argc, char * argv[])
{
……
}
参数argc 就代表启动程序时,命令行参数的个数。C/C++语言规定,可执行程序程序本
身的文件名,也算一个命令行参数,因此,argc 的值至少是1。argv 是一个数组,其中的
每个元素都是一个char* 类型的指针,该指针指向一个字符串,这个字符串里就存放着命
令行参数。例如,argv[0]指向的字符串就是第一个命令行参数,即可执行程序的文件名,
argv[1]指向第二个命令行参数,argv[2]指向第三个命令行参数……。请看例子程序:
例程2.18.cpp
1. #include <stdio.h>
2. int main(int argc, char * argv[])
3. {
4. for(int i = 0;i < argc; i ++ )
5. printf( "%s\n", argv[i]);
6. return 0;
7. }
将上面的程序编译成2.18.exe,然后在控制台窗口敲:
2.18 para1 para2 s.txt 5 4
输出结果就是:
2.18
para1
para2
s.txt
5
4