switch中使用字符串
时间: 2023-12-30 15:04:39 浏览: 76
在C++11之前,switch语句只支持整型、字符型和枚举类型作为其条件表达式,因此不能直接使用字符串。但是在C++11标准中,可以使用std::string类型作为switch的条件表达式。
具体实现方法是将字符串转化为整型或枚举类型,然后使用该类型作为switch语句的条件表达式。例如,可以使用哈希函数将字符串映射为整型,然后使用该整型作为switch的条件表达式。示例代码如下:
```c++
#include <iostream>
#include <string>
int hash(const std::string& str) {
int hash = 0;
for (char c : str) {
hash += static_cast<int>(c);
}
return hash;
}
int main() {
std::string input;
std::cin >> input;
switch (hash(input)) {
case hash("apple"):
std::cout << "This is an apple." << std::endl;
break;
case hash("banana"):
std::cout << "This is a banana." << std::endl;
break;
default:
std::cout << "Unknown fruit." << std::endl;
break;
}
}
```
需要注意的是,使用字符串作为switch的条件表达式可能会导致哈希碰撞,需要对哈希函数进行优化以提高准确性。
阅读全文