Heim >Backend-Entwicklung >C++ >Wie kann ich C-Enums einfach Strings zuordnen, ohne die Enum-Definitionen zu ändern?

Wie kann ich C-Enums einfach Strings zuordnen, ohne die Enum-Definitionen zu ändern?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-17 14:10:10183Durchsuche

How Can I Easily Map C   Enums to Strings Without Modifying Enum Definitions?

C-Enums ganz einfach Strings zuordnen

Bei der C-Programmierung können Sie in Bibliotheksheadern auf verschiedene Enums stoßen. Um die Übersetzung zwischen Aufzählungen und für Menschen lesbaren Zeichenfolgen zu erleichtern, suchen Entwickler häufig nach einer eleganten und effizienten Lösung. Typischerweise umfasst ein Brute-Force-Ansatz die Erstellung mehrerer Funktionen, die jeden Enum-Wert in einen String konvertieren. Allerdings mangelt es dieser Methode an der von vielen gewünschten Ausgereiftheit und Benutzerfreundlichkeit.

Eine mögliche Lösung liegt in der Verwendung von Vorlagen. Durch die Nutzung von Vorlagen ist es möglich, eine generische Funktion zu erstellen, die jeden Enum-Typ einer entsprechenden Zeichenfolge zuordnet. Dieser Ansatz erfordert jedoch eine Änderung der ursprünglichen Enum-Definitionen, was aufgrund der Abhängigkeit von Bibliotheken von Drittanbietern möglicherweise nicht immer möglich ist.

Für Situationen, in denen eine Änderung der Enum-Definitionen keine Option ist, ziehen Sie den folgenden Ansatz in Betracht:

  1. Erstellen Sie eine std::map, um Enum-Werte String-Literalen zuzuordnen.
  2. Verwenden Sie eine benutzerdefinierte map_init Klasse, um das Füllen der Karte mit Enum-String-Paaren zu vereinfachen.

Die benutzerdefinierte Klasse „map_init“ bietet eine praktische Möglichkeit, eine Karte zu initialisieren, indem Enum-String-Paare auf prägnante und lesbare Weise angegeben werden. Hier ist ein Beispiel:

std::map<MyEnum, const char*> MyMap;
map_init(MyMap)
    (eValue1, "A")
    (eValue2, "B")
    (eValue3, "C")
;

Das Ergebnis ist eine vollständig ausgefüllte Karte, auf die Sie zugreifen können:

eee e;
fff f;
std::cout << getStringValue(e);
std::cout << getStringValue(f);

Dieser Ansatz bietet eine saubere und effiziente Lösung für die Konvertierung von Aufzählungen in Strings und berücksichtigt dabei benutzerfreundliche und verständliche Nachrichten in Ihren Anwendungen.

Das obige ist der detaillierte Inhalt vonWie kann ich C-Enums einfach Strings zuordnen, ohne die Enum-Definitionen zu ändern?. 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