C++如何把枚举转成字符串
时间: 2023-07-04 15:30:50 浏览: 82
在 C++ 中,你可以使用预处理器宏或者函数来将枚举类型转换成字符串。以下是两种常用的方法:
## 方法一:使用预处理器宏
在 C++ 中,你可以使用预处理器宏 `#define STR(x) #x` 将任何表达式转换成字符串。因此,你可以定义一个包装枚举类型的宏,然后将其传递给 `STR` 宏来将其转换成字符串。以下是一个示例:
```cpp
#define ENUM_TO_STR(x) STR(x)
enum MyEnum {
Value1,
Value2,
Value3
};
const char* str = ENUM_TO_STR(Value1); // str 的值为 "Value1"
```
在上面的示例中,我们定义了一个名为 `ENUM_TO_STR` 的宏,它将其输入参数转换成字符串。然后,我们定义了一个名为 `MyEnum` 的枚举类型,以及一个指向枚举值的指针 `str`,该指针指向 `Value1` 的字符串表示。
## 方法二:使用函数
另一种将枚举类型转换成字符串的方法是使用一个函数。你可以定义一个函数,该函数接受一个枚举值作为参数,并返回其字符串表示。以下是一个示例:
```cpp
enum MyEnum {
Value1,
Value2,
Value3
};
const char* enumToString(MyEnum e)
{
switch (e) {
case Value1: return "Value1";
case Value2: return "Value2";
case Value3: return "Value3";
default: return "Unknown";
}
}
const char* str = enumToString(Value1); // str 的值为 "Value1"
```
在上面的示例中,我们定义了一个名为 `enumToString` 的函数,该函数接受一个枚举值作为参数,并返回其字符串表示。然后,我们定义了一个名为 `MyEnum` 的枚举类型,以及一个指向 `Value1` 的字符串表示的指针 `str`。在调用 `enumToString` 函数时,我们将 `Value1` 作为其输入参数,并将其返回值赋给 `str`。