<分区>
如何在 C++ 中“ToString()”一个枚举?
在 Java 和 C# 中,我只调用 ToString。
enum Colours
{
Red =0,
Green=1,
Blue=2
};
我需要创建一个字符串,例如:“Invalid color '” + color + “' selected。”
标签 c++
<分区>
如何在 C++ 中“ToString()”一个枚举?
在 Java 和 C# 中,我只调用 ToString。
enum Colours
{
Red =0,
Green=1,
Blue=2
};
我需要创建一个字符串,例如:“Invalid color '” + color + “' selected。”
最佳答案
虽然这通常是通过开关完成的,但我更喜欢数组:
#include <iostream>
namespace foo {
enum Colors { BLUE = 0, RED, GREEN, SIZE_OF_ENUM };
static const char* ColorNames[] = { "blue", "red", "green" };
// statically check that the size of ColorNames fits the number of Colors
static_assert(sizeof(foo::ColorNames)/sizeof(char*) == foo::SIZE_OF_ENUM
, "sizes dont match");
} // foo
int main()
{
std::cout << foo::ColorNames[foo::BLUE] << std::endl;
return 0;
}
显式数组大小有利于生成编译时间 如果枚举的大小发生变化而您忘记添加错误 适当的字符串。
或者,Boost 库中有 Boost.Enum。图书馆 尚未正式发布但相当稳定并提供什么 你要。不过,我不会向新手推荐它。
关于c++ - 我如何在 C++ 中使用 'ToString()' 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9150538/