c++ switch 字符串
时间: 2023-09-03 20:11:07 浏览: 93
C++中字符串的使用
5星 · 资源好评率100%
C++ 中的 switch 语句是不支持直接使用字符串作为 case 的,但可以使用以下方法实现:
1. 使用枚举类型代替字符串
定义一个枚举类型,每个枚举值对应一个字符串,然后在 switch 语句中使用枚举值作为 case。
```c++
enum Fruit {
APPLE,
BANANA,
ORANGE
};
void printFruit(Fruit f) {
switch(f) {
case APPLE:
cout << "Apple" << endl;
break;
case BANANA:
cout << "Banana" << endl;
break;
case ORANGE:
cout << "Orange" << endl;
break;
default:
cout << "Unknown fruit" << endl;
break;
}
}
int main() {
printFruit(APPLE);
printFruit(BANANA);
printFruit(ORANGE);
return 0;
}
```
2. 使用哈希表查找字符串对应的枚举值
定义一个哈希表,将字符串与枚举值一一对应,然后在 switch 语句中使用哈希表查找字符串对应的枚举值作为 case。
```c++
#include <unordered_map>
enum Fruit {
APPLE,
BANANA,
ORANGE
};
unordered_map<string, Fruit> fruitMap = {
{"apple", APPLE},
{"banana", BANANA},
{"orange", ORANGE}
};
void printFruit(string s) {
auto iter = fruitMap.find(s);
if(iter == fruitMap.end()) {
cout << "Unknown fruit" << endl;
return;
}
Fruit f = iter->second;
switch(f) {
case APPLE:
cout << "Apple" << endl;
break;
case BANANA:
cout << "Banana" << endl;
break;
case ORANGE:
cout << "Orange" << endl;
break;
default:
cout << "Unknown fruit" << endl;
break;
}
}
int main() {
printFruit("apple");
printFruit("banana");
printFruit("orange");
printFruit("pear");
return 0;
}
```
这样就可以通过字符串查找对应的枚举值,再在 switch 语句中使用枚举值作为 case。
阅读全文