枚举对象名称

时间:2013-05-16 00:50:34

标签: c++

#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;
}

对象名称颜色有用吗?我可以通过使用Enumerations打印出任何这些颜色的名称,或者我只能打印出每个颜色对应的常数吗?

1 个答案:

答案 0 :(得分:4)

  

对象名称颜色有用吗?

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

  

我可以通过使用Enumerations打印出任何这些颜色的名称,或者我只能打印出每个颜色对应的常数吗?

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

#define TO_STR(X) #X

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

如您所见,无法将枚举转换为字符串不适用于编译时已知的枚举常量:您可以使用a preprocessor trick to stringify them

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