从枚举类到std::string
时间: 2023-11-16 15:06:03 浏览: 35
可以使用以下方法将枚举类转换为std::string:
1. 使用一个函数或成员函数来执行转换:
```cpp
#include <string>
enum Color { RED, GREEN, BLUE };
std::string enumToString(Color color) {
switch (color) {
case RED: return "RED";
case GREEN: return "GREEN";
case BLUE: return "BLUE";
default: return "UNKNOWN";
}
}
int main() {
Color color = GREEN;
std::string str = enumToString(color);
return 0;
}
```
2. 使用C++11中的非成员特化方式:
```cpp
#include <string>
enum class Color { RED, GREEN, BLUE };
namespace std {
template<>
struct hash<Color> {
typedef Color argument_type;
typedef size_t result_type;
result_type operator()(const argument_type& color) const {
return static_cast<result_type>(color);
}
};
template<>
struct equal_to<Color> {
typedef Color first_argument_type;
typedef Color second_argument_type;
typedef bool result_type;
result_type operator()(const first_argument_type& lhs, const second_argument_type& rhs) const {
return lhs == rhs;
}
};
}
int main() {
Color color = Color::BLUE;
std::unordered_map<Color, std::string> colorMap;
colorMap[Color::RED] = "RED";
colorMap[Color::GREEN] = "GREEN";
colorMap[Color::BLUE] = "BLUE";
std::string str = colorMap[color];
return 0;
}
```