Überbrückung der Kluft: Konvertieren von C-Strings in Aufzählungstypen
In C stellt das Konvertieren von Strings in Aufzählungstypen (Enums) eine Herausforderung dar mit verschiedenen Techniken gelöst werden. Auch wenn eine Switch-Anweisung wie eine einfache Lösung erscheint, kann ihre Länge unhandlich werden. In diesem Artikel werden alternative Ansätze zur Vereinfachung der String-zu-Enum-Konvertierung untersucht.
Eine Methode beinhaltet die Verwendung einer Zuordnung zwischen Strings und ihren entsprechenden Enums. Zu diesem Zweck kann eine Standard-Map oder unordered_map verwendet werden, mit den Strings als Schlüssel und den Enums als Werten. Das Auffüllen der Karte kann jedoch genauso mühsam sein wie das Erstellen einer Switch-Anweisung.
C 11 zur Rettung
Mit der Einführung von C 11 ist das Auffüllen einer Karte mit String-Enum-Paare werden deutlich einfacher. Der folgende Codeausschnitt demonstriert diese Einfachheit:
static std::unordered_map<std::string, E> const table = {{"a",E::a}, {"b",E::b}}; auto it = table.find(str); if (it != table.end()) { return it->second; } else { error() }
In diesem Code enthält die Tabellenvariable eine statische Zuordnung, die Zeichenfolgen mit Aufzählungen verknüpft. Wenn die angegebene Zeichenfolge str in der Karte gesucht wird, wird der entsprechende Enum-Wert zurückgegeben, falls gefunden, andernfalls wird ein Fehler gemeldet.
Schlussfolgerung
Bei Verwendung einer Karte Da die Konvertierung von Zeichenfolgen in Aufzählungen praktischer ist, ist es wichtig zu beachten, dass das Auffüllen der Karte komplexer sein kann als das Erstellen einer Switch-Anweisung. Mit der vereinfachten Syntax von C 11 wird das Auffüllen der Karte jedoch zu einer viel einfacheren Aufgabe.
Das obige ist der detaillierte Inhalt vonWie können Sie C-Strings effizient in Aufzählungstypen konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!