Maison >développement back-end >C++ >Comment convertir une chaîne en énumération en C ?

Comment convertir une chaîne en énumération en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-11 04:13:03528parcourir

How to Convert a String to an Enum in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn