请教怎么直接将枚举数据enum直接转换成字符串
4个回答
推荐于2016-01-11 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464972
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
直接转是不可能的,总得要个string数组或map之类的:
---------------------------------------------------------
#include <iostream>
#include <string>
#include <map>
using namespace std;
enum MPType
{
MPT_None,
MPT_Other,
MPT_Board,
MPT_Length
};
//方案一,直接用数组
string MPTypeString[MPT_Length] = {
"MPT_None",
"MPT_Other",
"MPT_Board"
};
//方案二,用map
class 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<MPType, string> MPTypeStringMap;
MPTypeStringMap map;
};
int main()
{
MPTypeConverter converter;
cout << MPTypeString[MPT_Board] << endl;
cout << converter.ToString(MPT_Board) << endl;
return 0;
}
---------------------------------------------------------
#include <iostream>
#include <string>
#include <map>
using namespace std;
enum MPType
{
MPT_None,
MPT_Other,
MPT_Board,
MPT_Length
};
//方案一,直接用数组
string MPTypeString[MPT_Length] = {
"MPT_None",
"MPT_Other",
"MPT_Board"
};
//方案二,用map
class 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<MPType, string> 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());
}
返回枚举常量的名称,它包含在声明中。可以重写此方法,虽然一般来说没有必要。当存在更加“程序员友好的”字符串形式时,应该使用枚举类型重写此方法。
如果需要枚举具体值可以使用:
for (EnumTest e : EnumTest.values()) {
System.out.println(e.toString());
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以先设置String数组,然后以枚举值为下标寻找
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过格式操作使任意类型的数据转换成一个字符串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询