C++ 在C++;处理论据
程序是这样工作的,参数在开始时以如下形式提供: -w猫 字符串“cat”存储在变量模式中,对于后跟-的每个字母,我们会做一些事情;在本例中,我们设置mode=W。我遇到的问题是,参数的形式为: -w-s-n3,4类 现在我相信,与以前一样,模式按照读取顺序设置为W、S和N。如果我想存储/记住循环完成后设置的字母顺序mode,我可以将信息存储在数组中。同样,正如应该做的那样,模式被分配了字符串“cat”。如果我错了,请纠正我,或者有没有更简单的方法 其次,我希望能够访问和存储数字3和4。我不确定这是如何做到的,我也不确定argc-=optind;及 argv+=optind;做除了我认为参数存储在字符串数组中C++ 在C++;处理论据,c++,getopt,C++,Getopt,程序是这样工作的,参数在开始时以如下形式提供: -w猫 字符串“cat”存储在变量模式中,对于后跟-的每个字母,我们会做一些事情;在本例中,我们设置mode=W。我遇到的问题是,参数的形式为: -w-s-n3,4类 现在我相信,与以前一样,模式按照读取顺序设置为W、S和N。如果我想存储/记住循环完成后设置的字母顺序mode,我可以将信息存储在数组中。同样,正如应该做的那样,模式被分配了字符串“cat”。如果我错了,请纠正我,或者有没有更简单的方法 其次,我希望能够访问和存储数字3和4。我不确定这
enum MODE {
W,S,N
} mode = W;
int c;
while ((c = getopt(argc, argv, ":wsn")) != -1) {
switch (c) {
case 'w':
mode = W;
break;
case 's':
mode = S;
break;
case 'n':
mode = N;
break;
}
}
argc -= optind;
argv += optind;
string pattern = argv[0];
更新:弄明白了如何访问这些数字,我只需要在循环过程中查看argv中的内容。因此,我想我会将在那里找到的值存储在另一个变量中以供使用。
getopt
在提供了具有值的参数时设置全局变量optarg
。例如:
for(;;)
{
switch(getopt(argc, argv, "ab:h")) // note the colon (:) to indicate that 'b' has a parameter and is not a switch
{
case 'a':
printf("switch 'a' specified\n");
continue;
case 'b':
printf("parameter 'b' specified with the value %s\n", optarg);
continue;
case '?':
case 'h':
default :
printf("Help/Usage Example\n");
break;
case -1:
break;
}
break;
}
有关更完整的示例,请参见
我希望能够访问和存储数字3和4
由于这是一个逗号分隔的列表,您需要解析标记的
optarg
(请参见strtok
),然后使用atoi
或类似方法将每个标记转换为整数。我可以推荐getopt_long
或者更好的方法,。还可以看看这个名为..的库。。看起来很酷!谢谢,但我必须使用getopt:(