Maison > développement back-end > C++ > Comment puis-je convertir efficacement les énumérations C en chaînes ?

Comment puis-je convertir efficacement les énumérations C en chaînes ?

DDD
Libérer: 2025-01-06 00:53:41
original
756 Les gens l'ont consulté

How Can I Efficiently Convert C   Enums to Strings?

Conversion des énumérations C en chaînes : exploration des solutions

Le mappage des énumérations en chaînes est une exigence courante dans le développement C. L'article fourni précédemment se concentre sur ce problème et discute des solutions potentielles. L'auteur suggère initialement une méthode simple utilisant une instruction switch mais exprime des inquiétudes quant à leur nature de type C.

Une approche alternative consiste à utiliser un std::map pour associer des valeurs d'énumération à des représentations sous forme de chaîne. Pour améliorer la syntaxe, l'auteur introduit la classe map_init, qui permet l'ajout élégant d'entrées à la carte :

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

La classe map_init facilite le chaînage de Operator(), similaire à opérateur≪≪ sur std :: ostreams. La classe utilise un modèle map_init_helper pour fournir une interface conviviale permettant d'ajouter des entrées à n'importe quelle carte ou structure de type carte.

Voici l'implémentation de la classe map_init et de son assistant :

template struct map_init_helper
{
    T& data;
    map_init_helper(T& d) : data(d) {}
    map_init_helper& operator() (typename T::key_type const& key, typename T::mapped_type const& value)
    {
        data[key] = value;
        return *this;
    }
};

template map_init_helper map_init(T& item)
{
    return map_init_helper(item);
}

L'article mentionne également boost::assign comme bibliothèque existante offrant des fonctionnalités similaires. En utilisant une classe map ou map-init, les développeurs peuvent facilement convertir les valeurs d'énumération en chaînes correspondantes pour une lisibilité et une convivialité améliorées.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal