C++基础之getopt()和getopt_long() 用法:

简介:

#include <getopt.h>
  • 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;
		}
	}
}

再如:
getopt_longs 说明

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值