我有一个需要接受多个命令行参数的程序。我已经到了需要设置它来接受第n个参数的阶段,该参数指定最大和最小长度将最终被打印的字符串。基本上输入可能是这样的:
-a -n7,7 -i // with -a and -i being other arguments
我可以挑选出单个参数,但不确定如何提取最大和最小值。我已经尝试过(见下文),但每当我尝试使用变量minimum和maximum时,就会出现运行时错误。谢谢各位。
int c;
while ((c = getopt(argc, argv, ":wpsaevin")) != -1) {
switch (c) {
case 'w': // pattern matches whole word
mode = WHOLE;
break;
case 'p': // pattern matches prefix
mode = PREFIX;
break;
case 'a': // pattern matches anywhere
mode = ANYWHERE;
break;
case 's': // pattern matches suffix
mode = SUFFIX;
break;
case 'e': // pattern matches anywhere
mode = EMBEDDED;
break;
case 'v': // reverse sense of match
reverse_match = true;
break;
case 'i': // ignore case of pattern
ignore_case = true;
break;
case 'n': //Specifies word length
length_spec = true;
cin >> minimum >> maximum;
if (minimum == 0 && maximum == 0) { //no word limit
length_spec = false;
} else if (maximum == 0) {
maximum = 100;
}
break;
}
}
argc -= optind;
argv += optind;
cin
从控制台读取,这几乎肯定不是您想要的。如果minimum
和maximum
在-n
后从命令行传入,则可以从argv[whatever]
获取它们。 - Pete Becker