C++中 int main(int argc, char **argv) 命令行传递参数
C++中,比较常见的是不带参数的主函数int main(),如果使用命令行执行程序,主函数也可以接收预先输入的参数,形式如下。
int main(int argc,char **argv)
- argc:命令行参数个数(Argument Count)
- argv:命令行参数向量(Argument Vector)
例如,我们在命令行输入Project.exe string1 string2 string3
时,argc=4,表示输入的参数个数是4,分别是Project.exe
、string1
、string2
、string3
。
argv是一个字符串数组,对应存储这4个字符串,即argv[0] = "Project.exe", argv[1] = "string1", argv[2] = "string2", argv[3] = "string3"。因此可以在主函数中,后续通过argc和argv获取参数信息。
int main(int argc,char **argv)也可以写成int main(int argc, char *argv[])。
示例
假设要通过命令行接收一串数字,程序输出这串数字的和。
#include <iostream>
#include <cstdlib>
// int main(int argc, char *argv[])
int main(int argc, char **argv)
{
int sum = 0;
for (int i = 1; i < argc; ++i)
{
int num_i = atoi(argv[i]); // 字符串转换成整数
sum += num_i;
}
std::cout << sum;
return 0;
}
编译程序,生成.exe文件,windows环境下,可以进入cmd界面,通过cd
指令进入exe文件的所在目录。
比如我这里所生成的Project.exe文件路径为 E:\C++ Projects\MediaTek\03 数列求和\Project1\Debug,在cmd界面,先输入e:
,然后回车,进入E盘,再输入cd E:\C++ Projects\MediaTek\03 数列求和\Project1\Debug
,回车,从而进入exe文件的所在目录。
接下来输入Project1.exe 11 12 13 14
,回车,结果显示为50。