Maison > développement back-end > C++ > Comment puis-je mapper efficacement des énumérations C à des chaînes ?

Comment puis-je mapper efficacement des énumérations C à des chaînes ?

Susan Sarandon
Libérer: 2024-12-21 12:59:10
original
251 Les gens l'ont consulté

How Can I Efficiently Map C   Enums to Strings?

Comment mapper efficacement des énumérations C en chaînes

Lorsque vous travaillez avec des énumérations C, vous devrez peut-être convertir leurs valeurs en valeurs utilisateur. chaînes définies ou vice versa. Bien qu'une approche par force brute puisse impliquer une série d'instructions switch, il existe des solutions plus élégantes disponibles.

Utilisation d'un Std::map

Une méthode fiable pour mapper les énumérations aux chaînes consiste à utiliser un std::map. Cette approche évite de créer des copies de chaînes dans la carte et permet une recherche efficace.

Syntactic Sugar : Map_init Helper Class

Pour une meilleure lisibilité, envisagez d'utiliser une classe map_init. Cette classe initialise une carte et fournit une syntaxe pratique pour ajouter des entrées :

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

Cette classe utilise une structure map_init_helper qui permet d'enchaîner les entrées.

Exploiter Boost::assign

Si vous préférez ne pas créer d'assistants personnalisés, vous pouvez utiliser la bibliothèque Boost::assign, qui propose fonctionnalité similaire pour les cartes et autres structures de type carte.

Conclusion

Bien que les techniques décrites ici ne soient peut-être pas aussi concises que l'utilisation de RTTI, elles offrent une approche plus adaptée et flexible pour mapper les énumérations C aux chaînes, répondant à des exigences spécifiques telles que les représentations de chaînes personnalisées et la facilité de maintenance.

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