枚举到stringC ++

可能重复:
有一个简单的脚本来将C ++枚举转换为string吗?

我通常发现我需要将枚举转换为c + +中的string

我总是这样做:

enum Enum{ Banana, Orange, Apple } ; char * getTextForEnum( int enumVal ) { switch( enumVal ) { case Enum::Banana: return "bananas & monkeys"; case Enum::Orange: return "Round and orange"; case Enum::Apple: return "APPLE" ; default: return "Not recognized.."; } } 

有这样一个更好的或公认的成语吗?

 enum Enum{ Banana, Orange, Apple } ; static const char * EnumStrings[] = { "bananas & monkeys", "Round and orange", "APPLE" }; const char * getTextForEnum( int enumVal ) { return EnumStrings[enumVal]; } 

一种匿名查询表,而不是一个长的switch语句:

 return (const char *[]) { "bananas & monkeys", "Round and orange", "APPLE", }[enumVal]; 

你可以把枚举值和string放入STL映射中。 那么你可以像这样使用它。

  return myStringMap[Enum::Apple];