我有一个枚举,我正在进行cout
,如:cout << myenum
。
当我调试时,我可以将值视为整数值,但当cout
将其吐出时,它会显示为文本表示。
知道cout
在幕后做了什么吗?我需要相同类型的功能,并且有一些示例将枚举值转换为字符串,但似乎我们需要提前知道这些值是什么。就我而言,我没有。我需要采取任何ol'枚举并获得其文本表示。在C#中,这是一块蛋糕; C ++ ..根本不容易。
如果我需要并且适当地转换它,我可以取整数值,但字符串会给我我正确的需要。
更新:
非常感谢为这个问题做出贡献的每个人。最终,我在一些隐藏的代码中找到了答案。有一种方法可以将枚举值转换为表示实际移动的字符串,如“exd5”,它具有ya。在这种方法中虽然他们正在做一些非常疯狂的东西,我现在正远离它。我的主要目标是获得字符串表示。
答案 0 :(得分:3)
Enum.hpp:
enum Enum {
FOO,
BAR,
BAZ,
NUM_ENUMS
};
extern const char* enum_strings[];
Enum.cpp:
const char* enum_strings[] = {
"FOO",
"BAR",
"BAZ",
"NUM_ENUMS",
0 };
然后,当我想输出枚举的符号表示时,我使用std::cout << enum_strings[x]
。
因此,您需要知道字符串值,但只能在一个地方 - 而不是在任何地方使用它。
答案 1 :(得分:0)
此功能来自IOStreams库。 std::cout
是std::ostream
。
std::stringstream
也是std::ostream
。
int x = 5;
std::stringstream ss;
ss << x;
// ss.str() is a string containing the text "5"