C ++ switch语句,使用命令行参数

时间:2014-09-02 03:14:35

标签: c++ switch-statement command-line-arguments

我正在尝试使用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语句?

1 个答案:

答案 0 :(得分:7)

'vlow'是一个multicharacter literal,而不是字符串文字。

要比较C风格的字符串,请使用std::strcmp,如下所示:

if (std::strcmp(verbosity, "vlow") == 0)
{
   //process
}

请注意"vlow"使用双引号。

相关问题