ACE_Get_Opt解析命令行
ACE_Get_Opt是一种解析命令行参数选项的迭代器。
1:构造方法
ACE_Get_Opt需要引用头文件,#include "ace/Get_Opt.h"。
ACE_Get_Opt (int argc,
ACE_TCHAR **argv,
const ACE_TCHAR *optstring = ACE_TEXT (""),
int skip_args = ,
int report_errors = ,
int ordering = PERMUTE_ARGS,
int long_only = );
argc、argv为程序入口函数main方法的参数,也就是程序的命令行。
optstring 为指定的参数选项,并且是一个字符作为一个选项,主要包含三种形式
- 单纯的一个字符选项,比如 s,表示此选项后面不能添加选项的参数
- 一个字符选项后跟一个冒号,比如 s:,表示此选项后面会有一个参数
- 一个字符后面跟两个冒号,比如 s::,表示此选项后面即可以有参数也可以无参数
skip_args 表示从argv的第几个元素开始,默认为1,一般情况下argv[0]为程序的path
report_errors遇到不识别的参数时是否提示错误
long_only表示是否只包含字符串的选项参数。
下面解释一下 字符选项和字符串选项,也就是 short option 和 long option.
- short option 以 字符’-’开始,比如 -s
- long option 以两个字符’-’开始,比入 --server
这是在默认的情况下,也就是long_only = 0的情况下。而当long_only不等于0的时候,就可以通过-server来表示long option了。
2:操作
遍历命令行取出参数项依赖2个基本操作
/*
* Scan elements of @a argv (whose length is @a argc) for short option
* characters given in @a optstring or long options (with no short
* option equivalents).
*/
int operator () (void); /*
* For communication from @c operator() to the caller. When
* @c operator() finds an option that takes an argument, the argument
* value is returned from this method, otherwise it returns 0.
*/
ACE_TCHAR *opt_arg (void) const;
int operator () (void);用于遍历参数项
opt_arg用于取出参数项的值。
3:示例程序
命令行参数:ACE_TEST.exe -e 2000 -i 1000
#include "ace/Get_Opt.h"
#include "ace/OS_NS_unistd.h"
#include "ace/OS_NS_sys_time.h" #include <iostream>
const ACE_Time_Value max_interval(*); int main(int argc, char **argv)
{
ACE_Time_Value expiration = ACE_OS::gettimeofday();
ACE_Time_Value interval; ACE_Get_Opt opt(argc,argv,"e:i:");
for (int c;(c = opt()) != -;)
{
switch(c)
{
case 'e': expiration += ACE_Time_Value(atoi(opt.opt_arg()));
break;
case 'i':interval = ACE_Time_Value(atoi(opt.opt_arg()));
break;
}
}
if (interval > max_interval)
{
cout<<"interval must be less than "<<max_interval.sec()<<endl;
}
else if (expiration > (ACE_Time_Value::max_time - interval))
{
cout<<"expiration + interval must be less than"<<ACE_Time_Value::max_time.sec()<<endl;
}
return ;
}
部分转载自http://www.cnblogs.com/hbccdf/p/use_acegetopt_parse_commandline.html。
ACE_Get_Opt解析命令行的更多相关文章
- 使用ACE_Get_Opt解析命令行
当我们用C++开发一些C++控制台小工具时,会需要一些用户输入的参数来决定程序如何工作和执行,而用户输入参数的方式大部分都是采用命令行参数的方式. 比如上一篇文章 玩转Windows服务系列--命令行 ...
- boost之program_options库,解析命令行参数、读取配置文件
一.命令行解析 tprogram_options解析命令行参数示例代码: #include <iostream> using namespace std; #include <boo ...
- shell解析命令行的过程以及eval命令
本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e ...
- optparse模块解析命令行参数的说明及优化
一.关于解析命令行参数的方法 关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块.关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考: ...
- python解析命令行参数
常常需要解析命令行参数,经常忘记,好烦,总结下来吧. 1.Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: sys.argv 是命令行参数列表 参数个数:len(sys.a ...
- C#/.NET 使用 CommandLineParser 来标准化地解析命令行
CommandLineParser 是一款用于解析命令行参数的 NuGet 包.你只需要关注你的业务,而命令行解析只需要极少量的配置代码. 本文将介绍如何使用 CommandLineParser 高效 ...
- 使用 Apache Commons CLI 解析命令行参数示例
很好的输入参数解析方法 ,转载记录下 转载在: https://www.cnblogs.com/onmyway20xx/p/7346709.html Apache Commons CLI 简介 Apa ...
- linux 中解析命令行参数(getopt_long用法)
linux 中解析命令行参数(getopt_long用法) http://www.educity.cn/linux/518242.html 详细解析命令行的getopt_long()函数 http:/ ...
- (转)shell解析命令行的过程以及eval命令
shell解析命令行的过程以及eval命令 本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过 ...
随机推荐
- json恶补
JS操作JSON总结 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScr ...
- linux命令 awk
awk的工作流程如下: 读入有 '\n' 换行符分割的一跳记录,然后将记录按指定的域分隔划分域,填充域,$0 表示所有域, $1 表示第一个域, $n 表示第n个域.默认域分隔符为“空白键”或者“[t ...
- mariaDB安装完成后设置root密码等初始化操作
修改root密码1.以root身份在终端登陆(必须)2.输入 mysqladmin -u root -p password ex后面的 ex 是要设置的密码3.回车后出现 Enter password ...
- 第2章 熟悉Eclipse开发工具---- System.out.println("sum="+(a+b));
- K - Balance(动态规划专项)
K - Balance Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u Submit ...
- Struts2之checkboxlist 设置默认值和结果回显
<s:checkboxlist list="#{'篮球':'篮球','足球':'足球','排球':'排球'}"></s:checkboxlist> 这么定义 ...
- ssl证书验证
当我们在访问https网站时,浏览器就会自动下载该网站的SSL证书,并对证书的安全性进行检查. 其他概念不说了,有效期之类的验证也不说了.只说数字证书的真实性和可信性验证. 1.CA下发给网站的证书是 ...
- 河南多校联合训练 南阳理工 1261 音痴又音痴的LT
描述 LT最近一直在无限循环薛之谦的歌,简直都中毒了!可是呢…他的歌LT还是不会唱(其实不止他的歌LT不会唱,所有人的歌LT都不会唱…因为LT是标准的音痴)可是LT又很喜欢唱歌(所以LT不仅是音痴还是 ...
- OC-之AFNetworking与ASIHTTPRequest对比
一.底层实现 1.AFN的底层实现基于OC的NSURLConnection和NSURLSession 2.ASI的底层实现基于纯C语言的CFNetwork框架 3.因为NSURLConnection和 ...
- hdu_5791_Two(DP)
题目链接:hdu_5791_Two 题意: 给你两串数列,问你相同的子序列有多少个,要注意,可以重复,比如1 和1 1 1 ,相同的子序列为3个 题解: 就和求最长公共子序列差不多,只不过要全部加起来 ...