Heim >Backend-Entwicklung >C++ >Wie kann ich C-Enums mithilfe von Vorlagen einfach Strings zuordnen?

Wie kann ich C-Enums mithilfe von Vorlagen einfach Strings zuordnen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-08 03:27:09477Durchsuche

How Can I Easily Map C   Enums to Strings Using Templates?

So ordnen Sie C-Enums ganz einfach Strings zu

Hintergrund:

Sie haben Enum-Typen in externen Bibliotheksheadern definiert und Sie möchten Enum-Werte in für Menschen lesbare Zeichenfolgen konvertieren. Brute-Force-Lösungen beinhalten manuell definierte Funktionen, eine elegante Lösung wird jedoch mithilfe von Vorlagen gesucht.

Verwendung einer std::map:

Ein einfacher Ansatz ist die Verwendung von a std::map um Enum-Werte mit String-Literalen zu verknüpfen.

Syntaktischer Zucker mit der Klasse „map_init“:

Um die Syntax zu vereinfachen, kann eine Klasse „map_init“ erstellt werden, um die Verkettung von Wertzuweisungen zu ermöglichen:

map_init(MyMap)(eValue1, "A")
    (eValue2, "B")
    (eValue3, "C");

Diese Klassenvorlage gibt ein map_init_helper-Objekt zurück, das einen Verweis auf die Karte speichert und einen bereitstellt Operator()-Funktion zum Hinzufügen von Schlüssel-Wert-Paaren.

Beispielverwendung:

Um diesen Ansatz zu verwenden, können Sie:

  1. Erstellen eine Karte mit std::map MyMap;.
  2. Initialisieren Sie die Karte mit „map_init(MyMap)“, gefolgt von verketteten „operator()“-Aufrufen.
  3. Rufen Sie die Zeichenfolgendarstellung eines Aufzählungswerts mit getStringValue(enumValue) ab.

Alternative Ansatz:

Wenn die Enum-Namen selbst als Zeichenfolgen verwendet werden sollen, lesen Sie [diesen Beitrag] (Link zum entsprechenden Beitrag).

Zusammenfassung:

Diese Lösung bietet eine einfache und effiziente Möglichkeit, C-Enums auf Strings abzubilden und bietet eine elegantere Alternative zu Brute-Force-Methoden. Die Klasse „map_init“ vereinfacht die Syntax weiter und erleichtert die Arbeit mit Karten von Enum-Werten und deren Zeichenfolgendarstellungen.

Das obige ist der detaillierte Inhalt vonWie kann ich C-Enums mithilfe von Vorlagen einfach Strings zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn