Avatar ·

Wie man enum in modernem C++ (C++17/C++20) in einen String umwandelt

Hallo Kollegen! Ich schreibe ein Programm in C++17 und bin auf ein Problem gestoßen: Ich muss Enum-Werte in lesbarer Form ausgeben, aber die Standard-C++-Mittel bieten keine direkte Möglichkeit, enum in einen String umzuwandeln.\n\nHier ist ein Beispiel meines Codes:\n\n```cpp\nenum class Color {\n Red,\n Green,\n Blue,\n Yellow\n};\n\nint main() {\n Color c = Color::Green;\n // Ich möchte "Green" ausgeben, bekomme aber nur eine Zahl\n std::cout << static_cast(c); // Gibt 1 aus\n return 0;\n}\n```\n\nIn meiner realen Aufgabe enthält das Enum etwa 20 Werte, und ich möchte es für Logging und Benutzeroberfläche verwenden. Bisher habe ich ein riesiges switch-case geschrieben, aber das ist schrecklich — bei jedem Hinzufügen eines neuen Werts muss der Code an 5 Stellen geändert werden.\n\nIch weiß, dass es in C++ keine Reflection gibt.