c++中switch怎么判断字符串
时间: 2024-11-27 19:17:35 浏览: 25
在 C++ 中,直接使用 `switch` 语句来判断字符串通常是不可能的,因为 `switch` 只能用于整数、枚举类型的值以及字符。C++ 不支持将字符串作为 switch 的 case 子句,这是因为它不是数值型的数据类型。
如果你需要基于字符串做出决策,通常的做法是:
1. 将字符串转换为可以比较的整数或枚举类型。例如,你可以创建一个映射表(如 `std::map` 或 `enum`),其中字符串对应一个整数或标识符。
```cpp
#include <map>
enum StringType { UNKNOWN, STRING1, STRING2 };
std::map<std::string, StringType> string_to_type;
// 在程序启动时填充这个映射表
string_to_type["STRING1"] = STRING1;
string_to_type["STRING2"] = STRING2;
StringType type = string_to_type[string];
```
2. 使用函数指针或虚函数,针对每个字符串执行不同的操作。
```cpp
class StringHandler {
public:
virtual void handle(String str) = 0;
};
class HandlerA : public StringHandler {
public:
void handle(std::string str) override {
if (str == "STRING1") {
// 处理 A 类型的字符串
}
}
};
class HandlerB : public StringHandler {
public:
void handle(std::string str) override {
if (str == "STRING2") {
// 处理 B 类型的字符串
}
}
};
// 然后在 switch 语句里调用 handler 的 handle 方法
StringHandler* handlers[] = {new HandlerA(), new HandlerB()};
switch (string) {
case "STRING1":
handlers[0]->handle(string);
break;
case "STRING2":
handlers[1]->handle(string);
break;
default:
// 处理未知字符串
}
```
阅读全文