请教怎么直接将枚举数据enum直接转换成字符串

 我来答
可以叫我表哥
推荐于2016-01-11 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464980
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;
}
xb_447215
2016-01-04 · TA获得超过2038个赞
知道大有可为答主
回答量:3702
采纳率:0%
帮助的人:3922万
展开全部
如果只需枚举名称可以使用:toString()

返回枚举常量的名称,它包含在声明中。可以重写此方法,虽然一般来说没有必要。当存在更加“程序员友好的”字符串形式时,应该使用枚举类型重写此方法。
如果需要枚举具体值可以使用:
for (EnumTest e : EnumTest.values()) {

System.out.println(e.toString());
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有不怕
2015-12-26 · TA获得超过148个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:129万
展开全部
可以先设置String数组,然后以枚举值为下标寻找
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2020-12-25 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

通过格式操作使任意类型的数据转换成一个字符串

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式