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()及getopt_long()函数使用

在运行某个程序的时候,我们通常使用命令行参数来进行配置其行为。命令行选项和参数控制 UNIX 程序,告知它们如何动作。当 gcc的程序启动代码调用我们的入口函数 main(int argc,char ...
  • vonzhoufz
  • vonzhoufz
  • 2014年07月04日 15:36
  • 1754

getopt_long()使用方法

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

getopt_long 与 optind

刚开始接触 一些处理命令行参数的操作,开始不太明白,用例子测试了一下,感觉比以前明了多了。 命令行参数有长参数如version, 还有短参数 如 v, 那么用这两个都可以。程序处理的时候,会首先把长...
  • chaoyue1216
  • chaoyue1216
  • 2012年03月07日 18:43
  • 2754

getopt函数和getopt_long函数详解

getopt函数 函数功能:用来解析命令行参数,参数argc和argv分别代表参数个数和内容,跟main()函数里的命令行参数一样 函数所在头文件:#include 函数原型定义:int get...
  • coding__madman
  • coding__madman
  • 2016年04月02日 15:56
  • 4394

getopt、getopt_long和getopt_long_only解析命令行参数

一:posix约定:          下面是POSIX标准中关于程序名、参数的约定:          程序名不宜少于2个字符且不多于9个字符;          程序名应只包含小写字母和阿拉伯数...
  • gqtcgq
  • gqtcgq
  • 2015年07月30日 21:44
  • 686

getopt_long()函数作用

2007-07-26 09:47 getopt_long()函数的作用 Linux系统下,需要大量的命令行选项,如果自己手动解析他们的话实在是有违软件复用的思想,不过还好,GNU C libra...
  • linuxarmsummary
  • linuxarmsummary
  • 2013年10月14日 15:20
  • 800

getopt_long()解析命令行选项参数

#include 函数说明: 函数getopt用来解析命令行参数。 函数getopt_long支持长选项的命令行解析。 函数原型: int getopt_lo...
  • wsk004321
  • wsk004321
  • 2014年05月13日 11:53
  • 1048

关于getopt_long()

int getopt_long(int argc, char * const argv[],const char *optstring, const struct option *longopts,i...
  • benjamin721
  • benjamin721
  • 2016年01月13日 09:50
  • 724

命令行参数解析函数getopt_long() 使用详解

当一个用C语言编写的Linux或UNIX程序运行时,它是从main函数开始的。对这些程序而言,main函数的声明如下所示:int main(int argc, char *argv[])其中argc是...
  • feglass
  • feglass
  • 2016年05月21日 09:13
  • 1313

C语言中的getopt()和getopt_long()函数

getopt被用来解析命令行选项参数。 getopt_long支持长选项的命令行解析. 例如我们通常在终端上输入如下命令: ./main -l yongyuan --name  aini或者 /...
  • Stephan14
  • Stephan14
  • 2015年01月21日 17:17
  • 852
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:getopt_long使用方法
举报原因:
原因补充:

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