C++ cout 和枚举表示形式
C++ cout and enum representations
我有一个枚举,我正在对它进行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"
相关文章:
- 不带大括号的枚举形式
- 枚举环境变量的惯用C++14/C++17方法
- 类似枚举的计算常量
- 如何正确实现和访问运算符的各种自定义枚举器
- 错误:从"int"到枚举c++的转换无效
- C++中构造函数中的枚举
- 访问在 C++ 结构中声明的枚举变量
- 枚举类'classname'的多重定义
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- typedef 枚举和枚举类有什么区别?
- 为什么我的开关/机箱在使用枚举时默认?
- 标准::可选枚举的比较运算符
- C++两个源文件之间共享的枚举的静态实例
- 打印没有铸件的枚举可以在C++中吗?
- 如何将由一系列十六进制值表示的枚举附加到 QByteArray?
- 翻译枚举值qt的字符串表示
- 我需要使用枚举来表示难度级别。我不断收到有关使用 cin 的错误>>
- 是否对大型枚举值的表示有任何保证?
- 强制转换为枚举不能表示的枚举值合法吗
- C++ cout 和枚举表示形式