C++基础之getopt()和getopt

C++基础之getopt()和getopt,第1张

C++基础之getopt()和getopt 简介:
#include 
  • getopt 被用来解析命令行选项参数,不用自己写代码处理argv。其中比较重要的函数是getopt()和getopt_long().

  • main(int argc, char* argv[]), C程序启动代码调用main()时,会对命令行进行处理,argc 参数计数,argv包含执行参数的指针数组。

1. 函数-getopt() 说明:
getopt(int argc, char* argv[],const char *optstring)
作用:
  • getopt()处理以“-”开头的命令行参数,在命令行选项参数中再也检查不到optstring 中包含的选项时,返回-1.
  • optind 存储第一个不包含选项的命令行参数。该函数适用于短参数名使用。
    参数介绍:
参数说明:
  1. 单个字符表示选项
  2. 单个字符后接一个冒号:表示该选项后必须跟一个参数,且该参数跟在选项后或以空格隔开。
  3. 单个字符后跟两个冒号,表示该选项后必须跟一个参数,且该参数必须紧跟在选项后,不能有空格隔开。

上述参数的指针赋给optag (GUN 扩展特性)

getopt() 所设置的全局变量包括:

optarg——指向当前选项参数(如果有)的指针(optarg不需要定义,在getopt.h中已经有定义)。
optind——再次调用 getopt() 时的下一个 argv 指针的索引。
optopt——最后一个已知选项。可以重复调用 getopt(),直到其返回 -1 为止

getopt() 举例说明:

比如: getopt(int argc, char* argv[],”ab:c::d”);
getopt.exe -a -b b_parameter –cc_parameter -d
注意:getopt 会重新排列命令行参数顺序,将不包含的选项的命令行参数排到最后。

2. 函数getopt_long() 函数说明:
int getopt_long(int argc, char* const agrv[],const char *optstring, const struct option *longopts, int *longindex)
作用:

长参数名时使用。必须包含unistd.h 头文件。

参数说明:
struct option{
const char *name;   //长参数名
int has_arg; 		//has_arg 有3个取值,no_argument(或0) 表示该参数后面不跟参数值;//required_argument (或1)表示该参数后面一定要跟个参数值;// optional_argument(或2)表示该参数后面可以跟,也可以不跟参数值。
int *flag;			//决定getopt_long() 返回值到底是什么?如果flag设置为NULL,则getopt_long() 返回val 中的值,否则用val 填充flag 执行的值。
Int val;			//和flag 联合决定返回值。
}
常用demo:
main(int argc, char* argv[])
{
…
	while(true)
	{
		ic= getopt_long(argc, argv, “ ”,option_long,&longindex);
		if(ic==-1)
		break;
		
		switch(ic)
		{
			case xxx:
			break;
			……
			default:
			usage();
			break;
		}
	}
}

再如:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5155566.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存