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} };
So konvertieren Sie eine Zeichenfolge in eine Aufzählung:
MyEnum myEnum = enumMap[myString];
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} };
Dann zum Abrufen des Enum-Werts:
auto it = table.find(myString); if (it != table.end()) { return it->second; } else { // Handle error }
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!