switch语句中的表达式不能是字符串吗? C++ [重复]

Posted

技术标签:

【中文标题】switch语句中的表达式不能是字符串吗? C++ [重复]【英文标题】:Can't expression in switch statement be string? C++ [duplicate] 【发布时间】:2021-02-01 15:34:45 【问题描述】:

以下代码返回错误:开关量不是整数。怎么了?

string s = "20";
  
  switch (s)
    
    case "18":
      cout << "18" << "\n";
      break;
      
    case "20":
      cout << "20" << "\n";
      break;
    
  

【问题讨论】:

不,不能,因为您的案例是数字,为什么不使用数字? 【参考方案1】:

cases 必须是整数类型和编译时可评估的常量表达式。

不要使用语言,而是使用 if else 块。或者,如果您可以使用整数类型,请这样做:

int n = 20;  
switch (n)    
case 18:
    std::cout << n << "\n";
    break;      
case 20:
    std::cout << n << "\n";
    break;    

注意ostream &lt;&lt; 运算符有int 的重载。

【讨论】:

以上是关于switch语句中的表达式不能是字符串吗? C++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章

switch...case跳转表

C++怎么用switch语句判断输入的字符

switch语句里不需要必须有break吗

swtich能判断取值范围吗

Java中String,long,byte类型可以作为switch中的表达式吗?

c语言的switch语句和java的switch语句有啥不同吗?