C ++错误:“表达式必须具有整数或枚举类型”

时间:2014-05-22 17:06:35

标签: c++

我在下面的my(不完整)函数的switch语句中收到错误“Expression必须具有整数或枚举类型”。我盯着它看了一会儿,无法弄清楚是怎么回事。任何见解都非常感激。

std::string CWDriver::eval_input(std::string expr)
{
    std::vector<std::string> params(split_string(expr, " "));
    std::string output("");
    if (params.size() == 0)
    {
        output = "Input cannot be empty.\n";
    }
    else
    {
        switch (params[0])
        {
            case "d":

        }
    }
}

2 个答案:

答案 0 :(得分:3)

错误很明显。您只能使用积分类型(integerenumchar convertible integral值),或在switch语句中求值为整数类型的任何表达式

答案 1 :(得分:1)

params[0]的类型为std::string。您不能将std::string类型(不是整数)用作switch参数。如果您确信字符串不为空,请使用switch (param[0][0])case 'd'。但在这种情况下,您只能切换一个字符的字符串。如果您需要切换较长的字符串,则需要使用if-else if-else if-...

的序列