web-dev-qa-db-fra.com

Enum to String C ++

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

Je trouve couramment que j'ai besoin de convertir une énumération en 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 a-t-il un langage meilleur ou reconnu pour le faire?

47
bobobobo
enum Enum{ Banana, Orange, Apple } ;
static const char * EnumStrings[] = { "bananas & monkeys", "Round and orange", "Apple" };

const char * getTextForEnum( int enumVal )
{
  return EnumStrings[enumVal];
}
41
Mark Ransom

Type de table de recherche anonyme plutôt qu'une longue instruction switch:

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

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

   return myStringMap[Enum::Apple];
10
nathan