Maison > développement back-end > C++ > Comment puis-je facilement mapper des énumérations C à des chaînes sans modifier les définitions d'énumération ?

Comment puis-je facilement mapper des énumérations C à des chaînes sans modifier les définitions d'énumération ?

Patricia Arquette
Libérer: 2024-12-17 14:10:10
original
186 Les gens l'ont consulté

How Can I Easily Map C   Enums to Strings Without Modifying Enum Definitions?

Mappage facile des énumérations C en chaînes

En programmation C, vous pouvez rencontrer diverses énumérations dans les en-têtes de bibliothèque. Pour faciliter la traduction entre les énumérations et les chaînes lisibles par l'homme, les développeurs recherchent souvent une solution élégante et efficace. En règle générale, une approche par force brute implique la création de plusieurs fonctions qui convertissent chaque valeur d'énumération en chaîne. Cependant, cette méthode n'a pas la sophistication et la facilité d'utilisation souhaitées par beaucoup.

Une solution potentielle réside dans l'utilisation de modèles. En tirant parti des modèles, il est possible de créer une fonction générique qui mappe n'importe quel type d'énumération à une chaîne correspondante. Cependant, cette approche nécessite de modifier les définitions d'énumération d'origine, ce qui n'est pas toujours réalisable en raison du recours à des bibliothèques tierces.

Pour les situations où la modification des définitions d'énumération n'est pas une option, envisagez l'approche suivante :

  1. Créez un std::map pour mapper les valeurs d'énumération aux littéraux de chaîne.
  2. Utilisez une classe map_init personnalisée pour simplifier le processus de remplissage de la carte avec des paires de chaînes d'énumération.

La classe map_init personnalisée fournit un moyen pratique d'initialiser une carte en spécifiant des paires de chaînes d'énumération de manière concise et lisible. Voici un exemple :

std::map<MyEnum, const char*> MyMap;
map_init(MyMap)
    (eValue1, "A")
    (eValue2, "B")
    (eValue3, "C")
;
Copier après la connexion

Le résultat est une carte entièrement remplie à laquelle vous pouvez accéder :

eee e;
fff f;
std::cout << getStringValue(e);
std::cout << getStringValue(f);
Copier après la connexion

Cette approche offre une solution propre et efficace pour convertir des énumérations en chaînes, permettant messages conviviaux et compréhensibles dans vos applications.

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