2014-11-01 69 views
-1

如何通过索引访问枚举的每个值?按索引获取枚举值

例如,

enum food{PIZZA, BURGER, HOTDOG}; 

大家都知道,第一个元素的索引从0开始,除非初始化。

如何从索引获取枚举的字符串值?

我怎样才能打印PIZZA?

cout << food(0); 

我知道这是不正确的,但请告知我的感谢。

+0

枚举没有索引。他们有一组他们的实例可以拥有的值。 – juanchopanza 2014-11-01 09:56:46

回答

0

在C++中无法获得enum的字符串表示形式。

你必须将它们存储在其他地方。

enum food{PIZZA, BURGER, HOTDOG} 

char* FoodToString(food foodid) 
{ 
    char* foodStrings[3] = {"PIZZA","BURGER","HOTDOG"}; 

    return foodstrings[foodid]; 
} 
0

有没有这样做,因为没有必要做的方式。一般来说枚举是用来代替我们使用例如积分值: -

int func() 
{ 
//... 
if (something) 
    return 0; 
    return 1; 
} 

可以用

enum Status { SUCCESS, FAILURE }; 

Status func() 
{ 
//... 
if (something) 
    return SUCCESS; 
    return FAILURE; 
} 

被替换为更好的可读性。

如果你想通过提供索引来获得枚举值,那么你可以在某种映射中存储具有枚举值的索引(对于unordered_map)。