Maison > développement back-end > C++ > Comment convertir efficacement des chaînes C en types énumérés ?

Comment convertir efficacement des chaînes C en types énumérés ?

Mary-Kate Olsen
Libérer: 2024-11-25 11:28:24
original
477 Les gens l'ont consulté

How Can You Efficiently Convert C   Strings to Enumerated Types?

Combler le fossé : convertir des chaînes C en types énumérés

En C, la conversion de chaînes en types énumérés (énumérations) présente un défi qui peut être résolus à l’aide de diverses techniques. Même si une instruction switch peut sembler une solution simple, sa longueur peut devenir lourde. Cet article explore des approches alternatives pour simplifier la conversion de chaîne en énumération.

Une méthode consiste à utiliser un mappage entre les chaînes et leurs énumérations correspondantes. Une carte standard ou unordered_map peut être utilisée à cet effet, avec les chaînes comme clés et les énumérations comme valeurs. Cependant, remplir la carte peut être aussi fastidieux que créer une instruction switch.

C 11 à la rescousse

Avec l'avènement de C 11, remplir une carte avec les paires chaîne-énumération deviennent beaucoup plus faciles. L'extrait de code suivant démontre cette simplicité :

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() }
Copier après la connexion

Dans ce code, la variable table contient une carte statique qui associe des chaînes à des énumérations. Lorsque la chaîne donnée str est recherchée dans la carte, sa valeur enum correspondante est renvoyée si elle est trouvée, ou une erreur est signalée dans le cas contraire.

Conclusion

Lors de l'utilisation d'une carte pour convertir des chaînes en énumérations est pratique, il est important de noter que remplir la carte peut être plus complexe que de créer une instruction switch. Cependant, avec la syntaxe simplifiée de C 11, remplir la carte devient une tâche beaucoup plus simple.

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