第02讲 命令行参数
这部分知识是关于 C++ 程序的交互功能的,局限于命令行(如 Shell)里的交互。
视频地址:https://www.coursera.org/learn/cpp-chengxu-sheji/lecture/nTsWR/ming-ling-xing-can-shu
在字符界面的 shell 中执行命令时,命令行中的所有字串,称为「命令行参数」。命令行参数可以有多个,以空格分隔。
例如 Windows CMD Shell 中
> copy file1.txt file2.txt
上面这行命令中,copy, file1.txt, 和 file2.txt 都是命令行参数。
再举一个 Linux Bash Shell 中的例子
$ cp file1 file2
以上,cp, file1, 和 file2 都是命令行参数。
如何在程序中获取命令行参数?
C 的 main 函数完整格式是
/*
* argc 程序启动时,命令行参数的个数。C/C++ 规定,可执行程序本身的文件名,也算一个命令行参数,
* 故 argc 的值至少为1.
* argv 指针数组,其中的每个元素都是一个 char* 类型的指针,该指针指向一个字符串,这个字符串里
* 存放中命令行参数。如 argv[0] 指向第一个命令行参数,即可执行程序的文件名,argv[2]指向
* 第二个命令行参数,argv[2]指向第三个。
* 这个参数的类型是 char**.
*/
int main(int argc, char * argv[]) {
... ...
}
下面是一段可执行的代码
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
for (int i = 0; i < argc; i++) {
cout << argv[i] << ", ";
}
return 0;
}
(代码下载)
编译执行,可以有如下输入输出:
$ g++ ch02.cpp -o hello
$ ./hello a b c "d e" f 100
./hello, a, b, c, d e, f, 100,
最后一行是输出,其中也可以看到如果某参数本身含有空格,如 d e,可以通过双引号括起来。