enum



  • wenn ich ein enum habe, z.b.

    enum Day {
    
    	Monday = 0,
    	Tuesday,
    	Wednesday
    }
    
    code e = getCode();
    

    ich will nun e als textstring z.b als (char*) bekommen, damit ich den wert in ein logfile schreiben kann. wie kann ich das konvertieren.

    und kann ich, auch mit der zahl als schlüssel mir den dazugehörigen enum-wert ausgeben lassen?
    also, z.b. bei 1 Tuesday und bei 2 Wednesday?



  • nein wuesst ich jetzt nicht. aber mach doch einfach ein char array draus.

    char *Day[]= {"","Montag","Dienstag"...
    


  • Enum-Werte werden beim Compilieren in Zahlen-Werte umgewandelt.

    Wenn du die Enum-Werte ebenfalls als Zeichenketten haben möchtest wirst du nicht darum herumkommen eine Funktion zu schreiben, die in der Lage ist die Enum-Werte einer Zeichenkette zuzuordnen und umgekehrt. 😞



  • asr schrieb:

    ich will nun e als textstring z.b als (char*) bekommen, damit ich den wert in ein logfile schreiben kann.

    den integer-wert als char bekomme ich mit atoi().
    und für das andere werde ich wohl eine funktion schreiben.



  • Du musst doch einfach nur ein Array anlegen wie das bereits vorgeschlagen wurde:

    enum Day { Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag };
    char const *DayString[7] = { "Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag" };
    
    std::cout << DayString[ Montag ] << std::endl; //Output: Montag
    

    Da brauchst du doch keine spezielle Funktion für.

    BR



  • Besser:

    enum Day { Montag   = 0, 
                    Dienstag = 1, 
                    Mittwoch = 2, 
                    .....   };
    

    Dann sieht man auch, dass die Zahlenwerte für das Programm relevant sind. Außerdem sind dann die Zahlenwerte fest zugeordnet.



  • Mathias schrieb:

    Außerdem sind dann die Zahlenwerte fest zugeordnet.

    Das sind sie ohne explizite Angabe aber auch.


Anmelden zum Antworten