栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++基础之getopt()和getopt

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;
		}
	}
}

再如:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/443912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号