首页 > 解决方案 > switch语句中的表达式不能是字符串吗?C++

问题描述

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

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

标签: c++

解决方案


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

与其对抗语言,不如使用if else块。或者,如果您可以使用整数类型,请这样做:

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

注意到该ostream <<运算符对 . 有一个重载int


推荐阅读