Maison > développement back-end > C++ > le corps du texte

Comment convertir efficacement des chaînes en énumérations en C ?

Patricia Arquette
Libérer: 2024-11-11 01:55:02
original
493 Les gens l'ont consulté

How to Efficiently Convert Strings to Enums in C  ?

Conversion efficace des chaînes en énumérations en C

Lorsque vous travaillez avec des énumérations en C, vous pouvez rencontrer le besoin de convertir les chaînes en leurs correspondantes énumérer les valeurs. Même si une instruction switch peut suffire, elle peut devenir fastidieuse avec de nombreuses valeurs d'énumération. Cet article explore des approches alternatives pour une conversion efficace de chaîne en énumération.

Solution std::map

Une approche consiste à créer un std::map ou std :: unordered_map. Remplir la carte avec des paires clé-valeur de chaînes et de valeurs d'énumération est simple, permettant une recherche rapide. Cependant, cette méthode partage la complexité d'une instruction switch.

C 11 Syntactic Sugar

Pour C 11 et versions ultérieures, une solution plus concise devient disponible. En utilisant std::unordered_map initialisé statiquement, vous pouvez remplir la carte avec élégance en utilisant des accolades :

static std::unordered_map<std::string,E> const table = { {"a",E::a}, {"b",E::b} };
Copier après la connexion

Pour effectuer la recherche, utilisez simplement la méthode find() sur la table et vérifiez si l'itérateur est valide. S'il est trouvé, vous pouvez récupérer directement la valeur enum correspondante.

Exemple

Par exemple, considérons la déclaration enum suivante :

enum class E { a, b, c };
Copier après la connexion

Et une chaîne "a", vous pouvez la convertir en la valeur enum correspondante à l'aide du tableau :

auto it = table.find("a");
if (it != table.end()) {
  E result = it->second;
  // ...
}
Copier après la connexion

Cette approche fournit un aperçu concis et solution efficace pour convertir des chaînes en énumérations en C , réduisant ainsi la complexité des longues instructions switch.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal