Heim > Backend-Entwicklung > C++ > Wie konvertiere ich C-Enums automatisch in Strings, ohne den Quellcode zu ändern?

Wie konvertiere ich C-Enums automatisch in Strings, ohne den Quellcode zu ändern?

Susan Sarandon
Freigeben: 2024-12-17 18:51:16
Original
417 Leute haben es durchsucht

How to Automatically Convert C   Enums to Strings Without Modifying Source Code?

So konvertieren Sie C-Enums in Strings

Bei der Arbeit mit benannten C-Enums kann es vorkommen, dass ein Enum-Wert in den entsprechenden Wert konvertiert wird String-Darstellung ist erforderlich. Während es für diese Konvertierung mehrere Ansätze gibt, befasst sich dieser Artikel mit einer spezifischen Frage bezüglich der Generierung von Funktionen zum Konvertieren aller Aufzählungen in einem Projekt in Strings, ohne den Quellcode zu ändern.

X-Makros: Eine umfassende Lösung

Der empfohlene Ansatz beinhaltet die Verwendung von X-Makros. Eine Beispielimplementierung ist unten dargestellt:

#include <iostream>

enum Colours {
#   define X(a) a,
#   include "colours.def"
#   undef X
    ColoursCount
};

char const* const colours_str[] = {
#   define X(a) #a,
#   include "colours.def"
#   undef X
    0
};

std::ostream&amp; operator<<(std::ostream&amp; os, enum Colours c)
{
    if (c >= ColoursCount || c < 0) return os << "???";
    return os << colours_str[c];
}

int main()
{
    std::cout << Red << Blue << Green << Cyan << Yellow << Magenta << std::endl;
}
Nach dem Login kopieren

Definieren Sie in der Datei „colors.def“ die Aufzählungen wie folgt:

X(Red)
X(Green)
X(Blue)
X(Cyan)
X(Yellow)
X(Magenta)
Nach dem Login kopieren

Diese Methode bietet eine flexible Möglichkeit, Konvertierungsfunktionen für alle zu generieren Aufzählungen in Ihrem Projekt, ohne Änderungen an Ihrem Quellcode vorzunehmen.

Anpassbare Zeichenfolge Generierung

Alternativ können Sie sich für eine Methode entscheiden, die eine individuelle Anpassung der generierten String-Darstellungen ermöglicht. Der folgende Codeausschnitt veranschaulicht, wie Sie dies erreichen:

#define X(a, b) a,
#define X(a, b) b,

X(Red, "red")
X(Green, "green")
// etc.
Nach dem Login kopieren

Dieser Ansatz bietet eine bessere Kontrolle über die generierten Zeichenfolgen und kann besonders nützlich sein, wenn Sie spezifische Anpassungen für Ihre Anwendung benötigen.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich C-Enums automatisch in Strings, ohne den Quellcode zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage