C++ 诡计 : output actual enum, 不是它的值

标签 c++

<分区>

Possible Duplicate:
C++: Print out enum value as text

假设我有一个枚举:

typedef enum MyEnum_
{
  MY_ENUM_BLUE,
  MY_ENUM_RED,
  MY_ENUM_GREEN
} MyEnum;

而且我有一个获取“MyEnum”作为参数的方法。我想将 MyEnum 的值写入日志文件,但我不希望 0、1 或 2 出现在那里 --- 我想输出实际的枚举字符串“MY_ENUM_xxxx”,当然 没有 switch/case block ..... 并单独处理每个值。

在 C++ 中或使用宏是否有一些技巧或模式可以帮助我实现这一点?

最佳答案

在c++中不需要typedef

enum MyEnum_
{
  MY_ENUM_BLUE,
  MY_ENUM_RED,
  MY_ENUM_GREEN
} MyEnum;

#define TOSTR(x) #x

const char *names[]={TOSTR(MY_ENUM_BLUE),
               TOSTR(MY_ENUM_RED),
               TOSTR(MY_ENUM_GREEN)};

int main(int argc, char *argv[])
{
   MyEnum_ e=MY_ENUM_RED;

   std::cout << names[e] << std::endl;

   return 0;
}

关于C++ 诡计 : output actual enum, 不是它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480839/

相关文章:

c++ - 使用 tr1 在 C++ 中生成超出范围的随机数

c++ - 在 Windows 上使用 gdb 调试 MinGW 程序,而不是在断言失败时终止

c++ - 如何在 BST 的这个简单递归实现中摆脱警告

c++ - 如何在 C++ 中创建临时目录?

c++ - std::function 与使用 auto 一样高效吗?

C++ 适当的函数返回类型返回日期时间?

c++ - 如何打印一系列矩形

c++ - mingw中发送信号的 "kill"函数在哪里?

c++ - 在 C++ 中获取用户输入的第一个字母

c++ - 将枚举值映射到 C++ 中的类型