我正在尝试使用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"
。