Maison >développement back-end >C++ >Comment convertir une chaîne en énumération en C ?
Conversion d'une chaîne en énumération en C
En C, il n'y a pas d'équivalent direct à Enum.Parse de C# pour convertir des chaînes en énumérations. Une solution courante consiste à utiliser une instruction switch, mais pour les grandes listes d'énumérations, cette approche devient lourde.
Utiliser une carte ou une carte non ordonnée
Une solution élégante consiste à utilisez un std::map ou std::unordered_map pour associer les clés de chaîne aux valeurs d'énumération correspondantes. Cela permet une recherche et une récupération efficaces.
std::unordered_map<std::string, MyEnum> enumMap { {"foo", MyEnum::Foo}, {"bar", MyEnum::Bar} };
Pour convertir une chaîne en énumération :
MyEnum myEnum = enumMap[myString];
Initialisation triviale avec C 11
Avec C 11 et versions ultérieures, le remplissage de la carte peut être considérablement simplifié :
static std::unordered_map<std::string, MyEnum> const table = { {"a", MyEnum::a}, {"b", MyEnum::b} };
Ensuite, pour récupérer la valeur enum :
auto it = table.find(myString); if (it != table.end()) { return it->second; } else { // Handle error }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!