#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打印出任何这些颜色的名称,或者我只能打印出每个颜色对应的常数吗?
答案 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”枚举,即不使用顺序值的枚举,它的效果要好得多。