Heim > Backend-Entwicklung > C++ > Wie konvertiere ich einen String in eine Enum in C?

Wie konvertiere ich einen String in eine Enum in C?

Mary-Kate Olsen
Freigeben: 2024-11-11 04:13:03
Original
520 Leute haben es durchsucht

How to Convert a String to an Enum in C  ?

Konvertieren von String in Enum in C

In C gibt es kein direktes Äquivalent zu Enum.Parse von C# zum Konvertieren von Strings in Enums. Eine gängige Lösung ist die Verwendung einer switch-Anweisung, aber bei großen Enum-Listen wird dieser Ansatz unhandlich.

Verwenden einer Karte oder einer ungeordneten Karte

Eine elegante Lösung ist: Verwenden Sie eine std::map oder std::unordered_map, um Zeichenfolgenschlüssel mit entsprechenden Enum-Werten zu verknüpfen. Dies ermöglicht ein effizientes Suchen und Abrufen.

std::unordered_map<std::string, MyEnum> enumMap {
    {"foo", MyEnum::Foo},
    {"bar", MyEnum::Bar}
};
Nach dem Login kopieren

So konvertieren Sie eine Zeichenfolge in eine Aufzählung:

MyEnum myEnum = enumMap[myString];
Nach dem Login kopieren

Triviale Initialisierung mit C 11

Mit C 11 und höher kann das Auffüllen der Karte erheblich vereinfacht werden:

static std::unordered_map<std::string, MyEnum> const table = {
    {"a", MyEnum::a},
    {"b", MyEnum::b}
};
Nach dem Login kopieren

Dann zum Abrufen des Enum-Werts:

auto it = table.find(myString);
if (it != table.end()) {
    return it->second;
} else {
    // Handle error
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen String in eine Enum in C?. 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