C++ 如何在c+中基于getopt中存在另一个参数来解析其他参数+;

C++ 如何在c+中基于getopt中存在另一个参数来解析其他参数+;,c++,command-line-arguments,getopt,C++,Command Line Arguments,Getopt,我需要一种方法来说明如果用户输入-f我需要-n和-o,但是如果用户没有指定-f,-n-o是不必要的。我必须对许多情况进行类似的基于条件的额外参数解析。是否可以使用getopt?谁能帮我做这个 我不想在解析后检查每个变量。我希望在getopt字符串中可以使用任何正则表达式来完成我的工作。大概在getopt循环中,可以根据指定的标志设置不同的变量。循环完成后,您可以轻松地检查这些变量的状态。例如: const char* someVariable = NULL; const char* someOt

我需要一种方法来说明如果用户输入
-f
我需要
-n
-o
,但是如果用户没有指定
-f
-n-o
是不必要的。我必须对许多情况进行类似的基于条件的额外参数解析。是否可以使用getopt?谁能帮我做这个


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

大概在
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);
    }
}

解析所有内容,然后在最后检查是否得到了所需的所有内容?是的,我现在就是这样做的,但我觉得这是一种粗糙的方法,我想知道是否有任何方法可以在getopt表达式中指定这一点。由于我在很多情况下都必须这样做,代码会被if循环弄得乱七八糟。@VivekVK这就是你必须用
getopt
或其他任何方法来做的。否则,您将如何处理
-f ARG-n ARG-o ARG
-o ARG-n ARG-f ARG
?只有在处理完所有选项后,才能检查是否提供了所有选项。