C++ cout 和 enum 表示

标签 c++ enums cout

我有一个枚举,我正在执行 cout打开,如:cout << myenum .

当我调试时,我可以看到该值是一​​个整数值,但是当cout时吐出来,它显示为文本表示。

知道什么吗cout是在幕后做的吗?我需要相同类型的功能,并且有一些示例将枚举值转换为字符串,但似乎我们需要提前知道这些值是什么。就我而言,我不这样做。我需要获取任何 ol' 枚举并获取其文本表示形式。在 C# 中这是小菜一碟; C++..一点也不容易。

如果需要,我可以获取整数值并对其进行适当的转换,但是字符串将准确地提供我所需要的内容。

更新:

非常感谢所有对这个问题做出贡献的人。最终,我在一些隐藏的代码中找到了答案。有一种方法可以将枚举值转换为表示实际移动的字符串,例如“exd5”。尽管他们用这种方法做了一些非常疯狂的事情,但我目前远离这些事情。我的主要目标是获得字符串表示形式。

最佳答案

枚举.hpp:

enum Enum {
  FOO,
  BAR,
  BAZ,
  NUM_ENUMS
};

extern const char* enum_strings[];

枚举.cpp:

const char* enum_strings[] = {
  "FOO",
  "BAR",
  "BAZ",
  "NUM_ENUMS",
  0 };

然后当我想输出枚举的符号表示时,我使用std::cout << enum_strings[x] .

因此,您确实需要知道字符串值,但只在一个地方,而不是在任何地方使用它。

关于C++ cout 和 enum 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169315/

相关文章:

c++ - 确定谁打开了 TCP session

c++ - C++ 中的运算符 (::Type*)0 是什么意思

java - 为什么在Java中调用枚举类的方法时出现空指针异常

python - 在 Python 中添加并初始化枚举类变量

c++ - 如何编写具有 cout 样式接口(interface)的记录器类 (logger << "Error: "<< val << endl;)

c++ - 为什么cout会阻止后续代码在这里运行呢?

c++ - 在 C++ 中将字符串乘以 int

c++ - 具有已删除复制构造函数的类是否可以轻松复制?

c++:是否可以在函数体内#include?

Java:无法在枚举中使用 EnumSet:初始化错误:Tech Research Talent Tree 示例