枚举对象名称

Enumerations object name

本文关键字:对象 枚举      更新时间:2023-10-16
#include <iostream>
using namespace std;
enum color {
    black=1, blue, green, cyan, red, purple, yellow, white
} colors;
int main(){
   color mycolor;
   mycolor = blue;
   cout << mycolor;
    return 0;
}

对象名称的颜色有什么用途吗?我能不能用枚举法打印出这些颜色的名称或者我只能打印出每种颜色对应的常数?

对象名称的颜色有什么用途吗?

是:如果你想要一个color类型的全局变量,你可以在enum color声明之后定义它。

我是否可以通过枚举来打印出这些颜色的名称或者我只能打印出每种颜色对应的常数?

不,如果给定枚举值,您将无法打印enum成员的名称,除非您在自己的代码中构建一个系统,通过该系统您可以将常量"解码"回字符串表示。一种常见的方法是创建一个字符串字面值的并行数组:

#define TO_STR(X) #X
const char* color_names = {"none", TO_STR(black), TO_STR(blue), TO_STR(green), ...};

如你所见,不能将枚举转换为字符串并不适用于编译时已知的枚举常量:你可以使用预处理器技巧将它们字符串化。

将枚举值映射到字符串的另一种常见方法是使用std::map<color,std::string>。不过,它类似于并行数组,因为您需要手动初始化它。对于"标志"枚举,即不使用顺序值的枚举,它的效果要好得多。