Avatar ·

如何在现代C++(C++17/C++20)中将enum转换为字符串

大家好,同事们!我正在用C++17编写一个程序,遇到了一个问题:我需要以可读的形式输出枚举(enum)的值,但C++的标准工具没有提供直接将enum转换为字符串的方法。 以下是我的代码示例: ```cpp enum class Color { Red, Green, Blue, Yellow }; int main() { Color c = Color::Green; // 我想输出"Green",但只得到一个数字 std::cout << static_cast(c); // 输出1 return 0; } ``` 在我的实际任务中,枚举包含大约20个值,我想用它来进行日志记录和用户界面。目前我写了一个巨大的switch-case,但这很糟糕——每次添加新值时都需要在5个地方修改代码。 我知道C++没有像Java或C#那样的反射,但也许有一些现代的方法可以优雅地实现这一点?我听说过宏、Boost.Preprocessor、模板魔法,甚至C++20的concepts。但我还是个新手,有点迷