请问如何直接将枚举数据enum直接转换成字符串?

Siebeneagle 2007-05-06 11:57:23
请问如何直接将枚举数据enum直接转换成字符串?
如:
enum MPType
{
MPT_None=1
MPT_Other=2
MPT_Board=3
};

当 MPType var1 = MPType::MPT_Board; 时
我想从var1转换得到一个CString str1 = "MPT_Board";
...全文
2029 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lygheshan 2012-05-20
  • 打赏
  • 举报
回复
学习了...
Siebeneagle 2007-05-08
  • 打赏
  • 举报
回复
谢谢各位!我想要的是象C#那样能直接转换的方法,可能在C++里不行吧,enum被固定为相当于int的数据类型,我做一个公用函数一对一得到各自的字符串算了.
believefym 2007-05-07
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20050408/19/3921153.html
liumingrong 2007-05-07
  • 打赏
  • 举报
回复
楼上方案一应该是比较常用的方法
antterminator 2007-05-07
  • 打赏
  • 举报
回复
直接转是不可能的,总得要个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;
}
eggqq007 2007-05-07
  • 打赏
  • 举报
回复
好像不太可能吧

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧