C++ cout 和枚举表示形式

C++ cout and enum representations

本文关键字:表示 枚举 cout C++      更新时间:2023-10-16

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

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

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

如果需要,我可以获取整数值并适当地转换它,但字符串会准确地满足我的需求。

更新:

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

Enum.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] .

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

此功能来自 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"