C ++ cout和enum表示

时间:2011-05-29 17:41:40

标签: c++ enums cout

我有一个枚举,我正在进行cout,如:cout << myenum

当我调试时,我可以将值视为整数值,但当cout将其吐出时,它会显示为文本表示。

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

如果我需要并且适当地转换它,我可以取整数值,但字符串会给我我正确的需要。

更新:

非常感谢为这个问题做出贡献的每个人。最终,我在一些隐藏的代码中找到了答案。有一种方法可以将枚举值转换为表示实际移动的字符串,如“exd5”,它具有ya。在这种方法中虽然他们正在做一些非常疯狂的东西,我现在正远离它。我的主要目标是获得字符串表示。

2 个答案:

答案 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::coutstd::ostream

std::stringstream也是std::ostream

int x = 5;
std::stringstream ss;
ss << x;

// ss.str() is a string containing the text "5"