如何在 C++ 中“ToString()”枚举?
在 Java 和 C# 中,我只调用 ToString。
enum Colours
{
Red =0,
Green=1,
Blue=2
};
我需要创建一个字符串,例如:“无效颜色'”+颜色+“'选择”。
虽然这通常是通过开关完成的,但我更喜欢数组:
#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。图书馆
尚未正式发布,但相当稳定并提供了
你要。但我不会向新手推荐它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)