c++枚举类怎么定义成string类型
时间: 2023-12-18 14:05:02 浏览: 66
在C++11及以上的版本中,可以使用enum class来定义枚举类型,并且可以通过重载运算符来将枚举值转换成字符串类型。以下是一个示例代码:
```c++
#include <iostream>
#include <string>
enum class Color { RED, GREEN, BLUE };
std::string to_string(Color c) {
switch (c) {
case Color::RED:
return "RED";
case Color::GREEN:
return "GREEN";
case Color::BLUE:
return "BLUE";
default:
return "UNKNOWN";
}
}
int main() {
Color c = Color::RED;
std::cout << to_string(c) << std::endl; // 输出 "RED"
return 0;
}
```
在上面的代码中,我们定义了一个枚举类型Color,并且通过重载to_string函数来将枚举值转换成字符串类型。在main函数中,我们定义了一个Color类型的变量c,并且将其传入to_string函数中进行转换。最后输出的结果为"RED"。
相关问题
string到枚举类c++
可以使用一个函数将字符串转换为枚举类变量。需要注意的是,这个函数需要判断输入的字符串是否合法,即是否是枚举类中定义的成员。以下是一个示例代码:
```
#include <iostream>
#include <string>
using namespace std;
enum class Color {
Red,
Blue,
Black
};
Color stringToColor(const string& str) {
if (str == "Red") {
return Color::Red;
} else if (str == "Blue") {
return Color::Blue;
} else if (str == "Black") {
return Color::Black;
} else {
throw invalid_argument("Invalid color string");
}
}
int main() {
string colorStr = "Blue";
Color color = stringToColor(colorStr);
cout << "color: " << static_cast<int>(color) << endl;
return 0;
}
```
c++枚举转强成字符串
要将C++枚举转换为字符串,你可以使用一个转换函数或者利用C++11中的枚举类特性。
方法一:使用转换函数
```cpp
#include <string>
enum class MyEnum {
VALUE1,
VALUE2,
VALUE3
};
std::string enumToString(MyEnum value) {
switch (value) {
case MyEnum::VALUE1: return "VALUE1";
case MyEnum::VALUE2: return "VALUE2";
case MyEnum::VALUE3: return "VALUE3";
default: return "Unknown";
}
}
int main() {
MyEnum value = MyEnum::VALUE2;
std::string str = enumToString(value);
return 0;
}
```
方法二:使用C++11中的枚举类特性
```cpp
#include <string>
enum class MyEnum {
VALUE1,
VALUE2,
VALUE3
};
std::string enumToString(MyEnum value) {
return std::to_string(static_cast<int>(value));
}
int main() {
MyEnum value = MyEnum::VALUE2;
std::string str = enumToString(value);
return 0;
}
```
这两种方法都可以将枚举值转换为对应的字符串。你可以根据实际需求选择其中一种方法来实现。