Die Zuordnung von Enums zu Strings ist eine häufige Anforderung in der C-Entwicklung. Der zuvor bereitgestellte Artikel konzentriert sich auf dieses Problem und diskutiert mögliche Lösungen. Der Autor schlägt zunächst eine einfache Methode mit einer Switch-Anweisung vor, äußert jedoch Bedenken hinsichtlich ihrer C-ähnlichen Natur.
Ein alternativer Ansatz ist die Verwendung eines std::map
std::map<MyEnum, const char*> MyMap; map_init(MyMap) (eValue1, "A") (eValue2, "B") (eValue3, "C") ;
Die Klasse „map_init“ erleichtert die Verkettung von „operator()“, ähnlich wie Operator<< auf std::ostreams. Die Klasse verwendet einen vorlagenbasierten „map_init_helper“, um eine benutzerfreundliche Schnittstelle zum Hinzufügen von Einträgen zu jeder Karte oder kartenähnlichen Struktur bereitzustellen.
Hier ist die Implementierung der Klasse „map_init“ und des Helfers:
templatestruct map_init_helper { T& data; map_init_helper(T& d) : data(d) {} map_init_helper& operator() (typename T::key_type const& key, typename T::mapped_type const& value) { data[key] = value; return *this; } }; template map_init_helper map_init(T& item) { return map_init_helper (item); } Der Artikel erwähnt auch boost::assign als vorhandene Bibliothek, die ähnliche Funktionen bietet. Durch die Verwendung einer Map- oder Map-Init-Klasse können Entwickler Enum-Werte einfach in entsprechende Zeichenfolgen konvertieren, um die Lesbarkeit und Benutzerfreundlichkeit zu verbessern.
Das obige ist der detaillierte Inhalt vonWie kann ich C-Enums effizient in Strings konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!