main函数argc,argv操作
使用main(int argc, char *argv[])==main(int argc, char **argv)的基本操作是linux编程的最基本的一步,在windows下也是exe脱离IDE运行的必学技能,程序编译成功后,在cmd下,使用参数输入来运行程序,自己控制程序参数的输入来测试和运行程序。
1、 int argc, char *argv[]介绍
int argc代表输入参数的个数,英文全名arguments cout, 以空格来计数,程序名(*.exe)是其第一个参数。
char *argv[]以字符数组的方式储存参数内容,英文全名arguments vector, argv[1]代表程序名。
1 #include<iostream> 2 #include<stdlib.h> 3 4 using namespace std; 5 6 int main(int argc,char *argv[]) 7 { 8 cout<<"the argc is "<<argc<<endl; 9 for (int i = 0;i<argc;i++) 10 { 11 cout<<"argv["<<i<<"] is "<<argv[i]<<endl; 12 } 13 }
运行结果如下:
2、对argc和argv进行操作
对输入参数的个数和内容操作简单的可以归纳为对int型变量和二维的字符数组char *argv[]的操作。
1 #include <iostream> 2 #include <stdlib.h> 3 #include <string> 4 5 using namespace std; 6 7 //函数的使用方法 8 void printUsage() 9 { 10 cout<<"printUsage"<<endl; 11 }; 12 13 int main(int argv,char *argc[]) 14 { 15 int num; 16 if (argv == 1)//如果没有第二个参数,打印使用方法 17 { 18 printUsage(); 19 return -1; 20 } 21 for (int i = 1;i<argv;i++) 22 { 23 //当用户输入 --help或者?的时候,打印使用方法 24 if ((string(argc[i]) == "--help")||(string(argc[i]) == "?")) 25 { 26 printUsage(); 27 return -1; 28 } 29 //输入--times和一个数字的时候,把num赋值为输入的数字 30 else if ((string(argc[i])=="--times")) 31 { 32 num = atoi(argc[++i]); 33 } 34 //如果输入的是其他字符,无效输入 35 else 36 num = 0; 37 } 38 //打印test output,次数有输入的数字确定 39 for( int i = 0;i<num;i++) 40 { 41 cout<<"test output "<<i+1<<" time"<<endl; 42 } 43 }
测试结果:
NOTE:
程序主要是测试将参数转换为字符串和int型数字,并对字符串和数字进行处理的功能实现。
可以看出将字符数组的内容转换为字符串是:
string(argc[i]) == "--help"
将字符数组的内容转化为 int 型 是:
num = atoi(argc[++i]);