如何根据c ++中getopt中另一个参数的存在来解析其他参数

时间:2014-07-09 01:15:53

标签: c++ command-line-arguments getopt

我需要一种方式来说明用户是否输入-f <optarg>我需要-n <optarg>-o <optarg>,但如果用户未指定-f-n -o是没有必要。我必须做一些类似的条件,基于额外的争论解析许多情况。是否可以使用getopt?任何人都可以帮我这样做吗?

我不想在解析后检查每个变量。我希望是否有任何正则表达式,我可以在getopt字符串中使用它来完成我的工作。

1 个答案:

答案 0 :(得分:0)

大概在你的getopt循环中,你可以根据指定的标志设置不同的变量。循环完成后,您可以轻松检查这些变量的状态。例如:

const char* someVariable = NULL;
const char* someOtherVariable = NULL;

while ((opt = getopt(argc, arv, "f:n:")) != -1)
{
    switch (opt)
    {
        case 'f':
            someVariable = optarg;
            break;
        case 'n':
            someOtherVariable = optarg;
            break;
    }
}

if (someVariable != NULL)
{
    if (someOtherVariable == NULL)
    {
        fputs("-f specified without -n", stderr);
        exit(1);
    }
}