Maison >développement back-end >C++ >Comment puis-je mapper facilement des énumérations C à des chaînes à l'aide de modèles ?
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
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 :
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!