c++ 的参数解析方法: getopt

C++ 中自带了一个参数解析方法: getopt(int argc, char *const *argv, const char *shortopts),用于处理向main函数传入的数据

表头文件 #include<unistd.h>

函数的几个参数分别代表着:

int argc:参数的个数,等同于 main(int argc, char* argv[ ] )中的第一个参数

char *const *argv:参数数组,等同于 main(int argc, char* argv[ ] )中的第二个参数

const char *shortopts:解析格式。

主要讲解一下 shortopts 这个参数:

假设我们传入到main函数的参数是  -f xxx.txt -s -t

那么我们需要给入到getopt函数的shortopts变量值就应该是:  f:st

于是main函数就会知道: 参数f被输入了,其带有一个值是 xxx.txt

                                              参数s被输入了,不需要附带一个值

                                              参数t被输入了,也不需要附带一个值 

现在将shortopts分为两部分来看,一部分是冒号 “:”,另一部分是单个字符,例如: u,f,a,s,r,t

每一个字符表示一个参数,当你在传入 -x(x表示一个字符) 的时候,getopt方法就可以匹配到这个x

而每一个冒号则表示,冒号前面的这个参数,需要附带一个值,例如  -f xxx.txt 


使用的代码如下:

                opterr = 0; //头文件中自带的一个全局变量,用于循环参数
		char ch;
                //循环取出参数,然后进行匹配。如果有附加值的,使用 <span style="font-family: Arial, Helvetica, sans-serif;">optarg 读取</span>
<span style="font-family:Arial, Helvetica, sans-serif;">               //如果switch中case到了某个字符,表示输入的参数中,包含了 -x 参数</span>
<span style="font-family:Arial, Helvetica, sans-serif;">               //</span><span style="font-family: Arial, Helvetica, sans-serif;">options 是我自定义的一个类,用于存储参数值,判断是否启用了某个参数,以及其附带的值</span><span style="font-family:Arial, Helvetica, sans-serif;">
</span>		while( (ch = getopt(argc,argv, “u:f:asr:t” ) ) != -1){
			switch(ch){
			case 'u':
				options.getURL = true;
				options.Url = optarg;
				break;
			case 'f':
				options.getFromFile = true;
				options.fileName = optarg;
				break;
			case 'a':
				options.getALL = true;
				break;
			case 's':
				options.runScript = true;
				break;
			case 'r':
				options.checkScript = true;
				options.ruleFile = optarg;
				break;
			case 't':
				options.showTime = true;
				break;
			}
		}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值