通过索引获取枚举值

时间:2014-11-01 09:51:32

标签: c++ enums

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

例如,

enum food{PIZZA, BURGER, HOTDOG};

众所周知,除非初始化,否则第一个元素的索引从0开始。

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

如何才能打印PIZZA?

cout << food(0);

我知道这不对,但请告诉我谢谢。

2 个答案:

答案 0 :(得分:0)

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

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

示例

enum food{PIZZA, BURGER, HOTDOG}

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

    return foodstrings[foodid];
}

答案 1 :(得分:0)

没有办法这样做,因为没有必要这样做。通常,枚举用于替换我们使用的整数值,例如: -

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

可以替换为

enum Status { SUCCESS, FAILURE };

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

为了更好的可读性。

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