In C stoßen Entwickler häufig auf die Notwendigkeit, Strings in Enums zu übersetzen. Ein naiver Ansatz wäre die Verwendung einer langen switch-Anweisung. Es gibt jedoch bequemere Methoden.
Eine Lösung ist eine Zuordnung mithilfe einer Standardbibliothekszuordnung, die eine Entsprechung zwischen Zeichenfolgen und Aufzählungen herstellt. Dies kann zwar effektiv sein, erfordert jedoch eine sorgfältige Initialisierung.
Mit der Einführung von C 11 ist ein optimierterer Ansatz verfügbar. Mithilfe einer ungeordneten Zuordnung können Sie während der Kompilierungsphase eine Tabelle erstellen, die Zeichenfolgen Aufzählungen zuordnet:
static std::unordered_map<std::string,E> const table = { {"a",E::a}, {"b",E::b} };
Das Abrufen der entsprechenden Aufzählung für eine bestimmte Zeichenfolge ist jetzt unkompliziert:
auto it = table.find(str); if (it != table.end()) { return it->second; } else { // Handle error }
Das obige ist der detaillierte Inhalt vonWie konvertiert man C-Strings effizient in Enums?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!