注:这篇博客主要是转载http://blog.csdn.net/dcrmg/article/details/51987413,但同时也加入了自己的理解和总结。
一、概念
argc是argument count的缩写,表示传入main函数的参数的个数;
argv是argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的路径和名称,因此,需要我们传入main函数的参数个数应该是argc-1个;
二、使用方法
1.通过命令提示符传入
首先需要打开命令提示符窗口,点击开始菜单在“搜索程序和文件”里输入命令“cmd”或者直接按快捷键 Windows+R 在弹出的对话框里输入“cmd”即可打开命令提示符窗口:
打开命令提示符窗口后需要输入生成的exe文件所在的完整路径,一个简便的方法是把exe文件直接拖入提示符窗口即可,
之后输入传入参数,以空格分隔,之后回车,显示如下:
如果你坚持要手工输入完整路径的话,你会发现等你“Ctrl+C”路径后,在提示符窗口中按“Ctrl+V”却不能粘贴,这时候可 以在窗口中右键单击一下试试,你会发现右键菜单里的粘贴功能还是有效的。
2.在VS中如何传入参数
右击项目—>属性—>配置属性—>调试—>命令参数,在命令参数中输入,每个参数之间用空格隔开。
之后点击确定并应用,运行之后显示如下:
三、需要注意的地方
1.我们可以通过规范一些字母来表示输入参数的意义,再通过switch函数来传入到变量中。
例如,我们规定:
/s后面加的是一个字符串
/i后面加的是数字
/a后面加的是数组(注意每一个空格便表示一个参数,故传入数组时不要"1 2 3",而是应该"1,2,3")
还有一点需要注意的是传入的都认为是字符串型,如需要还得转化类型。
我设置的参数为:
/sMakeLifeBetter /i10 /a1,2,3,4
代码如下
#include<iostream>
using namespace std;
int main(int argc, char* argv[]) {
char string[256];
int num;
int array[256];
int arrayLen;
int m,n;
int tempNum;
char tempStr[256];
cout << argc << endl;
for (int i = 0;i < argc;i++)
cout << argv[i] << "\n";
cout << endl;
if (argc != 4) {
cout << "输入参数有问题" << endl;
system("pause");
return 0;
}
for (int i = 1;i < 4;++i) {
switch (argv[i][1]) {
case's':
strcpy_s(string, 256, argv[i] + 2);
cout << "s:" << string << endl;
break;
case'i':
num = atoi(argv[i] + 2);
cout << "i:" << num << endl;
break;
case'a':
arrayLen = strlen(argv[i]);
n = 0;//
for (m = 2;m < arrayLen;) {
tempNum = atoi(argv[i] + m);
_itoa_s(tempNum, tempStr, 10, 10);
array[n] = tempNum;
n++;
m += strlen(tempStr) + 1;
}
//测试输出array
cout << "array:" << endl;
for (m = 0;m < n;m++)
cout << array[m] << " ";
cout << endl;
break;
default:
cout << "输入参数有问题" << endl;
}
}
system("pause");
return 0;
}
输出结果截屏: