Maison >développement back-end >C++ >Comment puis-je mapper facilement des énumérations C à des chaînes à l'aide de modèles ?

Comment puis-je mapper facilement des énumérations C à des chaînes à l'aide de modèles ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-08 03:27:09481parcourir

How Can I Easily Map C   Enums to Strings Using Templates?

Comment mapper facilement des énumérations C à des chaînes

Arrière-plan :

Vous avez des types d'énumération définis dans les en-têtes de bibliothèques externes et souhaitez convertir les valeurs d'énumération en chaînes lisibles par l'homme. Les solutions par force brute impliquent des fonctions définies manuellement, mais une solution élégante est recherchée à l'aide de modèles.

Utilisation d'un std::map:

Une approche simple consiste à utiliser un std::map pour associer des valeurs d'énumération à des littéraux de chaîne.

Syntactic Sugar avec la classe map_init :

Pour simplifier la syntaxe, une classe map_init peut être créée pour permettre le chaînage des affectations de valeurs :

map_init(MyMap)(eValue1, "A")
    (eValue2, "B")
    (eValue3, "C");

Ce modèle de classe renvoie un objet map_init_helper qui stocke une référence à la carte et fournit un Fonction Operator() pour ajouter des paires clé-valeur.

Exemple d'utilisation :

Pour utiliser cette approche, vous pouvez :

  1. Créer une carte utilisant std::map MyMap;.
  2. Initialisez la carte avec map_init(MyMap) suivi d'appels Operator() enchaînés.
  3. Récupérez la représentation sous forme de chaîne d'une valeur enum à l'aide de getStringValue(enumValue).

Approche alternative :

Si les noms d'énumération eux-mêmes doivent être utilisés comme chaînes, reportez-vous à [ce message] (lien vers le message pertinent).

Résumé :

Cette solution fournit une solution simple et efficace moyen de mapper des énumérations C à des chaînes, offrant une alternative plus élégante aux méthodes de force brute. La classe map_init simplifie encore la syntaxe, facilitant ainsi le travail avec les cartes de valeurs d'énumération et leurs représentations sous forme de chaîne.

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