Hallo zusammen,
heute wurde uns bei der MSDN Hotline unter anderem folgende Frage gestellt: Ich bräuchte in C++ eine enum wie in Java, dem ich auch Strings zuweisen kann. Da es so etwas in C++ nicht gibt, habe ich einfach eine 'map' genommen "enums" als key und die entsprechenden Strings als values hinzugefügt.Gibt es dafür in der STL eine bessere Lösung? Ich könnte auch den Codeaus 4. dafür Zweck entfremden.(Als Beispiel: Die vier Himmelsrichtungen, sowohl als enum, als auch als String.)
Unsere Antwort bzw. unser Lösungsvorschlag darauf war:Wie gesagt, C++ ist ein schlechtes Java ( umgekehrt genauso).
In Ihrem konkreten Fall könnte aber folgendes Konstrukt helfen:
#include <iostream>
#include <string>
using namespace std;
//Declaration und definition
enum weekday
{
sunday = 0,
monday,
tuesday,
wednesday,
thursday,
friday,
saturday
};
const char* wd_str[] = { "sunday","monday","tuesday","wednsday","thursday","friday","saturday" };
std::ostream& operator<<( std::ostream& lhs, weekday rhs )
{
return lhs << wd_str[rhs];
}
int main()
{
cout << monday;
}
Dieser Code erlaubt es einen enum schnel in einen string umzuwandeln. für die andere Richtung ( string -> enum) kann man eine Assoziative Datenstruktur seiner Wahl verwenden (map, unorered_map,...).
Wir hoffen, vielen Besuchern der
MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.
Viele Grüße,
Markus Klein
MSDN Hotline für MSDN Online Deutschland
Disclaimer:Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können. Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline: http://www.msdn-online.de/Hotline
Es gelten für die MSDN Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu Markenzeichen sowie die allgemein gültigen Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN Hotline.