getopt_long使用方法

转载 2015年11月18日 14:50:39
看开源代码  感觉这以后总会用到,写的也简洁
static const char* shortopts = "p:o:m:d:g:b:a:r:x:l:sv";

enum { OPT_HELP = 1, OPT_VERSION, OPT_VALIDATE, OPT_EDGESTATS, OPT_EXACT, OPT_MAXINDEL, OPT_TR, OPT_MAXEDGES };

static const struct option longopts[] = { 
    { "verbose",               no_argument,       NULL, 'v' }, //NULL 表示getopt_long返回val('v')
    { "out-prefix",            required_argument, NULL, 'o' },
    { "min-overlap",           required_argument, NULL, 'm' },
    { "bubble",                required_argument, NULL, 'b' },
    { "cut-terminal",          required_argument, NULL, 'x' },
    { "min-branch-length",     required_argument, NULL, 'l' },
    { "resolve-small",         required_argument, NULL, 'r' },
    { "max-divergence",        required_argument, NULL, 'd' },
    { "max-gap-divergence",    required_argument, NULL, 'g' },
    { "max-indel",             required_argument, NULL, OPT_MAXINDEL },
    { "max-edges",             required_argument, NULL, OPT_MAXEDGES },
    { "smooth",                no_argument,       NULL, 's' },
    { "transitive-reduction",  no_argument,       NULL, OPT_TR },
    { "edge-stats",            no_argument,       NULL, OPT_EDGESTATS },
    { "exact",                 no_argument,       NULL, OPT_EXACT },
    { "help",                  no_argument,       NULL, OPT_HELP },
    { "version",               no_argument,       NULL, OPT_VERSION },
    { "validate",              no_argument,       NULL, OPT_VALIDATE},
    { NULL, 0, NULL, 0 } 
};

for (char c; (c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1;) //不NULL 则返回longopts下表
    {
        std::istringstream arg(optarg != NULL ? optarg : "");//optarg 指向需要val的key 对应的val
        switch (c)
        {
            case 'o': arg >> prefix; break;
            case 'm': arg >> opt::minOverlap; break;
            case '?': die = true; break; //需要val 没有传 或 参数不是 -h --help 函数出错返回?
            case 'v': opt::verbose++; break;
            case 'l': arg >> opt::trimLengthThreshold; break;
            case 'b': arg >> opt::numBubbleRounds; break;
            case 'd': arg >> opt::maxBubbleDivergence; break;
            case 'g': arg >> opt::maxBubbleGapDivergence; break;
            case 's': opt::bSmoothGraph = true; break;
            case 'x': arg >> opt::numTrimRounds; break;
            case 'r': arg >> opt::resolveSmallRepeatLen; break;
            case OPT_MAXEDGES: arg >> opt::maxEdges; break;
            case OPT_TR: opt::bPerformTR = true; break;
            case OPT_MAXINDEL: arg >> opt::maxIndelLength; break;
            case OPT_EXACT: opt::bExact = true; break;
            case OPT_EDGESTATS: opt::bEdgeStats = true; break;
            case OPT_VALIDATE: opt::bValidate = true; break;
            case OPT_HELP:
                std::cout << ASSEMBLE_USAGE_MESSAGE;
                exit(EXIT_SUCCESS);
            case OPT_VERSION:
                std::cout << ASSEMBLE_VERSION_MESSAGE;
                exit(EXIT_SUCCESS);

        }
    }


getopt_long()使用方法

本文内容大部分翻译自Linux Man Page 用于学习如何解析命令行参数,其中讲解了getopt、getopt_long、getopt_long_only等函数的用法和区别。...
  • LYH66
  • LYH66
  • 2015年11月29日 19:55
  • 1595

关于C语言中getopt()函数的使用方法

在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如: ./a.out -a1234 -b432 -c -d 程序会根据读取的参数执行相应的操作,在C...

关于C语言中getopt()函数的使用方法

在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如: ./a.out -a1234 -b432 -c -d 程序会根据读取的参数执行相应的操作,...
  • adermxl
  • adermxl
  • 2011年09月23日 16:03
  • 243

getopt源码支持getopt_long方法和win32下使用

GNU libc提供了getopt和getopt_long用于解析命令行参数,很好用,想在windows下使用,就google了几个win32下的C/C++写得getopt,并作了一些比较。 ...
  • earbao
  • earbao
  • 2016年05月14日 11:04
  • 1225

使用getopt_long()从命令行获取参数,struct option

本文来自:http://blog.csdn.net/yui/article/details/5669922 众所周知,C程序的主函数有两个参数,其中,第一个参数是整型,可以获得包括程序名字的参数...

getopt_long及其使用

Linux系统下,需要大量的命令行选项,如果自己手动解析他们的话实在是有违软件复用的思想,不过还好,GNU C library留给我们一个解析命令行的接口(X/Open规范),好好使用它可以使你的程...

getopt_long的使用心得

在看一个看开源的代码的时候,看到了一个选项参数的操作,里面用到了getopt_long这个函数,发现这个函数真的蛮不错的,对长选项或短选项处理的很好。 1.结构体 struct option ...
  • xluren
  • xluren
  • 2013年05月24日 17:24
  • 824

perl使用Getopt::Long模块,处理命令行参数

perl脚本的命令行参数处理办法 代码解释 脚本使用 参考文档perl脚本的命令行参数处理办法perl自带Getopt::Long模块,就是一个函数库。 还有一个Getopt::Std模块,不过有了...

getopt_long使用

linux系统命令解析接口: #include #include #include /* 程序的名称。*/ const char* program_name; /* 将程序使用方法输出到S...

在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数 z

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com] 本文链接: http://www.php-oa.com/2009/04/04/perl_getopt-long...
  • skly01
  • skly01
  • 2011年09月23日 20:26
  • 2113
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:getopt_long使用方法
举报原因:
原因补充:

(最多只允许输入30个字)