从枚举值中获取字符串的一种优雅方式
本文关键字:一种 方式 枚举 获取 字符串 | 更新日期: 2023-09-27 18:11:45
可能重复:
有没有一个简单的脚本可以将C++枚举转换为字符串?
在下面的C#程序中,当使用枚举优先级时,我需要字符串"None",而不是id 0。下面给出了执行此操作的C#代码。在C++中有没有一种优雅的方法可以做到这一点。在C++实现中可以避免映射吗。
enum Priority
{
None,
Trivial,
Normal,
Important,
Critical
}
class Program
{
static void Main()
{
// Write string representation for Important.
Priority enum1 = Priority.Important;
string value1 = enum1.ToString();
// Loop through enumerations and write string representations. (See GetNames)
for (Priority enum2 = Priority.None; enum2 <= Priority.Critical; enum2++)
{
string value2 = enum2.ToString();
Console.WriteLine(value2); //outputs the string None, Trivial etc ...
}
}
}
public override string ToString()
{
Type type = base.GetType();
object obj2 = ((RtFieldInfo)GetValueField(type)).InternalGetValue(this, false);
return InternalFormat(type, obj2);
}
在C++中,枚举只不过是一个整数文本的语法糖。编译器很快就去掉了枚举器名称,所以运行时永远无法访问它。如果你想为枚举指定一个字符串名称,你必须用艰苦的方法。