C++ 诡计:输出实际枚举,而不是其值
C++ Trickery : output actual enum, not its value
可能的重复项:
C++:将枚举值打印为文本
假设我有一个枚举:
typedef enum MyEnum_
{
MY_ENUM_BLUE,
MY_ENUM_RED,
MY_ENUM_GREEN
} MyEnum;
并且我有一个获取"MyEnum"作为参数的方法。我想将该 MyEne 的值写入日志文件,但我不希望 0、1 或 2 出现在那里---我想输出实际的枚举字符串"MY_ENUM_xxxx",当然没有开关/案例块.....并单独处理每个值。
在 c++ 中或使用宏中是否有一些技巧或模式可以帮助我实现这一目标?
无需在 c++ 中键入
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++14/C++17方法
- 类似枚举的计算常量
- 如何正确实现和访问运算符的各种自定义枚举器
- 错误:从"int"到枚举c++的转换无效
- C++中构造函数中的枚举
- 访问在 C++ 结构中声明的枚举变量
- 枚举类'classname'的多重定义
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- typedef 枚举和枚举类有什么区别?
- 为什么我的开关/机箱在使用枚举时默认?
- 标准::可选枚举的比较运算符
- C++两个源文件之间共享的枚举的静态实例
- 打印没有铸件的枚举可以在C++中吗?
- 枚举成员与静态 int 成员?
- C++:枚举:错误:应使用标识符而不是"}"
- 带有 c++ 的枚举(输入检查)
- 在 qml 中使用 Q_ENUM 和 Q_PROPERTY 作为枚举类
- 为什么 int 类型的枚举类值不能用作 int
- C++ 诡计:输出实际枚举,而不是其值