2014-11-01 94 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)。