switch中能否使用string做参数?
时间: 2023-09-05 13:02:58 浏览: 198
可以使用string作为switch语句的参数。在C++11或更高版本中,switch语句支持string类型作为参数。
在使用字符串参数进行switch语句时,需要使用std::hash函数或自定义hash函数将字符串转换为整数,以便进行比较和匹配。
例如,可以通过以下方式在switch语句中使用字符串参数:
```cpp
#include <iostream>
#include <string>
int main() {
std::string fruit = "apple";
std::size_t hash = std::hash<std::string>{}(fruit); // 将字符串转换为整数
switch (hash) {
case std::hash<std::string>{}("apple"):
std::cout << "It's an apple." << std::endl;
break;
case std::hash<std::string>{}("banana"):
std::cout << "It's a banana." << std::endl;
break;
case std::hash<std::string>{}("orange"):
std::cout << "It's an orange." << std::endl;
break;
default:
std::cout << "It's an unknown fruit." << std::endl;
break;
}
return 0;
}
```
当字符串参数为"apple"时,输出为"It's an apple."。当字符串参数为"banana"时,输出为"It's a banana."。当字符串参数为"orange"时,输出为"It's an orange."。如果字符串参数为其他值,则输出为"It's an unknown fruit."。
注意,使用字符串作为switch语句的参数时,需要确保各个case中的字符串是唯一的,以避免哈希冲突。
阅读全文