2014-11-01 4 views
-1

Как я могу получить доступ к каждому значению перечисления по индексу?Получение перечисления Значения по его индексу

, например,

enum food{PIZZA, BURGER, HOTDOG}; 

, как мы все знаем, индекс первого элемента начинается с 0, если не инициализированы.

Как я могу получить строковое значение перечисления из индекса?

Как я могу распечатать PIZZA?

cout << food(0); 

Я знаю, что это не правильно, но, пожалуйста, сообщите мне спасибо.

+0

перечисления не имеют индексов. У них есть набор значений, которые могут иметь их экземпляры. – juanchopanza

ответ

0

Вы не можете получить строковое представление enum в C++.

Вы должны хранить их в другом месте.

Пример

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).

Смежные вопросы