直接转是不可能的,总得要个string数组或map之类的:---------------------------------------------------------#include #include #include using namespace std;enum MPType {MPT_None,MPT_Other,MPT_Board,MPT_Length};//方案一,直接用数组string MPTypeString[MPT_Length] = {"MPT_None","MPT_Other","MPT_Board"};//方案二,用mapclass MPTypeConverter {public:MPTypeConverter() {map.insert(make_pair(MPT_None, "MPT_None"));map.insert(make_pair(MPT_Other, "MPT_Other"));map.insert(make_pair(MPT_Board, "MPT_Board"));}string ToString(MPType key) {MPTypeStringMap::iterator pos = map.find(key);if (pos != map.end())return pos->second;return string("");}private:typedef map MPTypeStringMap;MPTypeStringMap map;};int main(){MPTypeConverter converter;cout << MPTypeString[MPT_Board] << endl;cout << converter.ToString(MPT_Board) << endl;return 0;}
如果只需枚举名称可以使用:toString()返回枚举常量的名称,它包含在声明中。可以重写此方法,虽然一般来说没有必要。当存在更加“程序员友好的”字符串形式时,应该使用枚举类型重写此方法。如果需要枚举具体值可以使用: for (EnumTest e : EnumTest.values()) { System.out.println(e.toString()); }
可以先设置String数组,然后以枚举值为下标寻找
通过格式操作使任意类型的数据转换成一个字符串