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 = 1,
               int report_errors = 0,
               int ordering = PERMUTE_ARGS,
               int long_only = 0);

  

  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(60*60);

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()) != -1;)
    {
        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 0;
}

  部分转载自http://www.cnblogs.com/hbccdf/p/use_acegetopt_parse_commandline.html。

时间: 2024-10-08 19:22:45

ACE_Get_Opt解析命令行的相关文章

python 解析命令行

原文 http://python.jobbole.com/87014 python解析命令行 2016/12/13 · 基础知识 · 命令行 分享到:0 原文出处: 顾慎为 getopt:和C中的getopt()等价.optparse:2.7后已不推荐使用.argparse:基于optparse的新库.docopt:根据文档描述,自动生成.另一份参考文档:docopt. 更详细的内容可参考上述文档. getopt 若对C的getopt()函数不熟悉,或者倾向于使用较少的代码,或者需要对帮助信息和

Qt - 解析命令行

Qt从5.2版开始提供了两个类QCommandLineOption和QCommandLineParser来解析应用的命令行参数. 一.命令行写法 命令行:"-abc" 在QCommandLineParser的解析模式为ParseAsCompactedShortOptions(默认)时会被认为是3个参数,即"-a"."-b"和"-c" QCommandLineOption op1("a"); QCommand

boost之program_options库,解析命令行参数、读取配置文件

一.命令行解析 tprogram_options解析命令行参数示例代码: [cpp] view plaincopy #include <iostream> using namespace std; #include <boost/program_options.hpp> namespace po = boost::program_options; int main(int argc, char*argv[]) { //int level; po::options_descripti

shell解析命令行的过程以及eval命令

本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e "some files:" ~/i* "\nThe date:$(date +%F)\n$name's age is $((a+4))" >/tmp/a.log 假设在执行该命令前,已赋值变量"name=longshuai"和"a=

shell如何解析命令行以及eval命令

1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e "some files:" ~/i* "\nThe date:$(date +%F)\n$name's age is $((a+4))" >/tmp/a.log 假设在执行该命令前,已赋值变量"name=longshuai"和"a=24",于是重定向到/tmp/a.log中的结果为: some files

flag 是Go 标准库提供的解析命令行参数的包QANDA.REN文库

flag flag 是Go 标准库提供的解析命令行参数的包. 使用方式: flag.Type(name, defValue, usage) 其中Type为String, Int, Bool等:并返回一个相应类型的指针. flag.TypeVar(&flagvar, name, defValue, usage) 将flag绑定到一个变量上. 自定义flag 只要实现flag.Value接口即可: type Value interface { String() string Set(string)

用Google的gflags轻松的编码解析命令行参数

支持的参数类型 gflags支持的类型有bool,int32,int64,uint64,double和string.可以说这些基本类型大体上满足了我们的需求. DEFINE_bool: boolean DEFINE_int32: 32-bit integer DEFINE_int64: 64-bit integer DEFINE_uint64: unsigned 64-bit integer DEFINE_double: double DEFINE_string: C++ string 比如上文

解析命令行参数的方法

一.关于解析命令行参数的方法 关于"解析命令行参数"的方法我们一般都会用到sys.argv跟optparse模块.关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考:https://www.cnblogs.com/aland-1415/p/6613449.html 这里为大家介绍一个比sys.argv更强大的optparse模块. 这里说一句题外话,点开optparse的源码,第一行注释是这样的:A powerful, extensible, and

python 解析命令行选项

问题: 程序如何能够解析命令行选项 解决方案 argparse 模块可被用来解析命令行选项 argparse 模块 argparse 模块是标准库中最大的模块之一,拥有大量的配置选项 dest 参数指定解析结果被指派给属性的名字 metavar 参数被用来生成帮助信息 action 参数指定跟属性对应的处理逻辑, 通常的值为 store ,将其存储为字符串,action='append'  用来存储某个值或将多个参数值收集到一个列表中 一旦参数选项被指定,你就可以执行 parser.parse(