C ++错误:“表达式必须具有整数或枚举类型” [重复]
Posted
技术标签:
【中文标题】C ++错误:“表达式必须具有整数或枚举类型” [重复]【英文标题】:C++ Error: "Expression must have integral or enum type" [duplicate] 【发布时间】:2014-05-22 17:06:34 【问题描述】:我在下面我的(不完整)函数的switch
语句中收到错误“表达式必须具有整数或枚举类型”。我已经盯着它看了一会儿,无法弄清楚这是怎么回事。任何见解都非常感谢。
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":
【问题讨论】:
它有什么令人困惑的地方?错误告诉你发生了什么。你在哪里读到你可以在std::string
上switch
?
也许你错过了字符串不是整数类型的点?
在 C/C++ 中,不能开启字符串或其他复合类型。
您是否打算开启 params[0][0]? IE。字符“d”?
【参考方案1】:
错误很明显。您只能使用 integral 类型(integer
、enum
、char
等可转换到integral
值),或任何表达式 在switch
语句中计算为整数类型。
【讨论】:
【参考方案2】:params[0]
的类型为 std::string
。您不能将std::string
类型(不是整数)用作switch
参数。如果您确信字符串不为空,请使用switch (param[0][0])
和case 'd'
。但在这种情况下,您将只能切换一个字符的字符串。如果需要切换较长的字符串,则需要使用if-else if-else if-...
的序列。
【讨论】:
以上是关于C ++错误:“表达式必须具有整数或枚举类型” [重复]的主要内容,如果未能解决你的问题,请参考以下文章