c++ 中,switch 的变量只能是整形吗?可以使字符串吗
时间: 2024-02-18 15:02:31 浏览: 242
C++中用栈来判断括号字符串匹配问题的实现方法
在C++11标准之前,switch语句的控制表达式只能是整型或枚举类型。但是在C++11标准之后,可以使用字符串作为switch语句的控制表达式。
在使用字符串作为switch语句的控制表达式时,需要使用std::string类型,并且需要在每个case标签中使用字符串字面量。例如:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "hello";
switch (str) {
case "hello":
std::cout << "Hello, world!" << std::endl;
break;
case "goodbye":
std::cout << "Goodbye, world." << std::endl;
break;
default:
std::cout << "Unknown string." << std::endl;
break;
}
return 0;
}
```
在上面的代码中,我们使用了std::string类型的变量str作为switch语句的控制表达式,并且在每个case标签中都使用了字符串字面量。需要注意的是,使用字符串作为switch语句的控制表达式时,在每个case标签中必须使用字符串字面量,而不能使用变量或表达式。
需要注意的是,使用字符串作为switch语句的控制表达式时,效率可能不如使用整型或枚举类型,因为字符串比较需要进行逐个字符的比较。因此,在实际编程中,需要根据具体情况进行选择。
阅读全文