Gå til innhold

Få ut navnet på enummen?


Anbefalte innlegg

Hvis jeg har følgende enums:

 

enum Color
{
RED,
GREEN,
BLUE
}

 

og skriver følgende:

 

std::cout << "Color is " << RED << std::endl;

 

får jeg ut "Color is 0". Det er jo litt kjedelig da jeg ville ha hatt ut "Color is RED". Kan det gjøres på en eller annen måte? En kan jo lage en tabell(for oppslag på indeks) med strings men det hindrer systemet å være fullt så fleksibelt.

Endret av South_Bridge
Lenke til kommentar
Videoannonse
Annonse

En kan jo lage en tabell(for oppslag på indeks) med strings men det hindrer systemet å være fullt så fleksibelt.

 

I utgangspunktet -- nei. C++ tilbyr ikke symbolmanipulasjon på dette nivået.

 

Du kan muligens prøve en eller annen form for preprosessering (makroer? Ditt eget lille språk på toppen av C++), men det blir også en del arbeid.

 

Dersom C++-kompilatoren din støtter C99-utvidelser og du ikke er redd for evt. inkompatibilitet og du ikke setter enum-verdiene til noe veldig spesifikt, så kan dette være en framgangsmåte:

 

enum color { red, green, blue };
const char *color_names[] = {
   [red] = "red",
   [green] = "green",
   [blue] = "blue",
};

 

Evt. en funksjon som populerer en std::map (eller tilsvarende) som du så bruker for å oversette fra enum til dens tekstlige representasjon.

Endret av zotbar1234
Lenke til kommentar

Letteste er vel noe å lage en switch eller noe lignende.

 

enum Color {red, blue, green};

Color farge;

farge = red;

switch(farge)   {
  case red:   cout << "red";   break;
  case blue:  cout << "blue";  break;
  case green: cout << "green"; break;
}

 

mja... jeg endte opp med dette:

 

enum Color
{
RED,
GREEN, 
BLUE
}
std::string strColor[3] = { "RED", "GREEN", "BLUE" };

 

Og tanken ble da at enum Colors verdi ble da indeksen på det jeg ville ha i strColor

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...