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
Susan SarandonOriginal
2024-12-17 18:51:16418Durchsuche

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;
}

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

X(Red)
X(Green)
X(Blue)
X(Cyan)
X(Yellow)
X(Magenta)

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.

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!

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