我有一个枚举,我正在执行 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/