我正在尝试使用 switch 语句来启动函数调用。需要在来自命令行参数的参数中传递到 switch 语句的值,这意味着它存储在 argv[] 中。在我的例子中,已知此参数存储在 argv[5] 中。我的问题是我不知道如何正确转换或存储在 argv[5] 中找到的值,以便它可以被 switch 语句读取。我尝试使用 char*、char[] 和 string 作为我的变量“verbosity”的数据类型
我不断收到的错误是:语句需要整数类型的表达式('char *' 无效) 开关(冗长) ^ ~~~~~~~~~
而我的代码如下:
char* verbosity = argv[5];
cout << endl << verbosity;
switch(verbosity)
{
case 'vlow':
{
vlow();//calls vlow function
break;
}
case 'vmed':
{
vmed();//calls vmed function
break;
}
case 'vhigh':
{
vhigh();//calls vhigh function
break;
}
default:
break;
}
我应该使用某种格式将字符串从 argv[] 传递到我的 switch 语句吗?
最佳答案
'vlow'
是一个 multicharacter literal ,不是字符串文字。
要比较 C 风格的字符串,请像这样使用 std::strcmp
:
if (std::strcmp(verbosity, "vlow") == 0)
{
//process
}
注意使用带双引号的 "vlow"
。
关于C++ switch 语句,使用命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615310/