Comment convertir une énumération en chaîne en C++ moderne (C++17/C++20)
Bonjour, collègues ! J'écris un programme en C++17 et j'ai rencontré un problème : je dois afficher les valeurs des énumérations (enum) sous une forme lisible, mais les outils standards du C++ ne fournissent pas de moyen direct de convertir une énumération en chaîne.
Voici un exemple de mon code :
```cpp
enum class Color {
Red,
Green,
Blue,
Yellow
};
int main() {
Color c = Color::Green;
// Je veux afficher "Green", mais je n'obtiens qu'un nombre
std::cout << static_cast(c); // Affiche 1
return 0;
}
```
Dans mon problème réel, l'énumération contient environ 20 valeurs, et je souhaite l'utiliser pour la journalisation et l'interface utilisateur. Pour l'instant, j'ai écrit un énorme switch-case, mais c'est horrible — à chaque ajout d'une nouvelle valeur, je dois modifier le code à 5 endroits.
Je sais qu'en C++ il n'y a pas de réflexion comme en Java ou C#, mais peut-être existe-t-il une façon moderne de faire cela élégamment ? J'ai entendu parler des macros, de Boost.Preprocessor, de la magie des templates et même du C++20 avec ses concepts. Mais je suis débutant et je...
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
Kotlin : run, let, apply, also, with — quand utiliser quoi ? Exemples
Importation de paquets locaux en Go : guide pas à pas avec code
Qui es-tu, objet ? Découvrir le nom de la classe en TypeScript (runtime)
Sécuriser une application PHP : guide complet d'authentification