c++中,枚举类型和字符串的相互转换
时间: 2023-06-05 20:47:25 浏览: 935
enum_strings:c ++ enum可转换为和从字符串
在C语言中,枚举类型和字符串之间的互相转换是比较常见的需求。下面将分别介绍如何实现这两种转换。
首先,将枚举类型转换成字符串。在C语言中,我们可以利用switch语句和枚举类型的取值来实现。如下面的代码所示:
```c
enum Fruit {
APPLE,
BANANA,
ORANGE
};
const char* fruitToString(enum Fruit fruit) {
switch (fruit) {
case APPLE:
return "apple";
case BANANA:
return "banana";
case ORANGE:
return "orange";
default:
return "";
}
}
```
在这段代码中,我们定义了一个枚举类型`Fruit`,其中包含了三个取值。然后,我们定义了一个函数`fruitToString`,该函数接受一个枚举类型的参数,并返回一个对应的字符串。在函数内部,我们使用了switch语句来根据不同的枚举值返回不同的字符串。
其次,将字符串转换成枚举类型。在C语言中,我们可以采用一些方法来实现这个转换。以下是一种常见的方式:
```c
enum Fruit stringToFruit(const char* str) {
if (strcmp(str, "apple") == 0) {
return APPLE;
} else if (strcmp(str, "banana") == 0) {
return BANANA;
} else if (strcmp(str, "orange") == 0) {
return ORANGE;
} else {
return -1; // 表示转换失败
}
}
```
在这个函数中,我们定义了一个名为`stringToFruit`的函数,该函数将一个字符串转换成枚举类型。我们使用了`strcmp`函数来比较字符串是否相等,从而确定对应的枚举值。如果字符串无法转换成枚举类型,函数返回-1表示转换失败。
总的来说,在C语言中,枚举类型和字符串互相转换并不是很复杂。只要我们熟悉基本的语法和函数,就可以很轻松地实现这些转换。
阅读全文