可能重复:
Is there a simple script to convert C++ enum to string?枚举到字符串C++
我经常觉得我需要一个枚举转换为C++字符串
我总是最后做:
enum Enum{ Banana, Orange, Apple } ;
char * getTextForEnum(int enumVal)
{
switch(enumVal)
{
case Enum::Banana:
return "bananas & monkeys";
case Enum::Orange:
return "Round and orange";
case Enum::Apple:
return "APPLE" ;
default:
return "Not recognized..";
}
}
有没有更好的或公认的习惯用法?
也许使用'的std ::地图<整型,的std :: string>的'代替枚举和开关?通过对对象进行一些包装,您可以使它足够聪明,可以重用为所有应用程序的错误代码查找和处理程序。 – AJG85 2011-06-08 15:44:59
一个改进是省略'default:'子句,同时调高编译器的警告级别并将警告视为错误。这样,如果你扩展了枚举列表,编译器会在你的switch语句中发出警告并失败,提醒你扩展交换器。有些人说你应该总是有一个默认的,但我相信这是一个缺乏实际可以帮助你的场景。 – 2011-06-08 15:46:15