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 :
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") ;
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);
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!