Enum to Ssortingng C ++

Duplication possible:
Existe-t-il un script simple pour convertir l’énumération C ++ en chaîne?

Je trouve souvent que je dois convertir un enum en une chaîne en c ++

Je finis toujours par faire:

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.."; } } 

Y at-il un idiome meilleur ou reconnu pour faire cela?

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

Une sorte de table de recherche anonyme plutôt qu’une longue déclaration de changement:

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

Vous pouvez lancer la valeur enum et la chaîne dans une carte STL. Ensuite, vous pouvez l’utiliser comme ça.

  return mySsortingngMap[Enum::Apple];