找回密码
 立即注册

QQ登录

只需一步,快速开始

工控课堂 首页 工控文库 上位机编程 查看内容

通过typeid.name函数获得中文名类的中文名

2022-10-24 20:04| 发布者: gk-auto| 查看: 592| 评论: 0

摘要: 一直想着能通过现成的typeid.name()函数直接获得我中文类的名字,可是却一直得到的乱码,网上搜索了好久也没有答案,最后终于在我不懈寻找下找到了解决方法。最后发现是文字编码不同的原因,储存在代码中的编码方式 ...

一直想着能通过现成的typeid.name()函数直接获得我中文类的名字,可是却一直得到的乱码,网上搜索了好久也没有答案,最后终于在我不懈寻找下找到了解决方法。

最后发现是文字编码不同的原因,储存在代码中的编码方式,和通过cout输出出来的文字编码方式不同

这个我也不太懂,于是从网上找了许多编码方式转换的函数。试了好多不行,不过最后还是让我试到了。

 

char* U2G(const char* utf8)
{
int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len + 1];
memset(wstr, 0, len + 1);
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);
len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len + 1];
memset(str, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);
if (wstr) delete[] wstr;
return str;
}

转载自:https://www.cnblogs.com/babietongtianta/p/3143900.html

不过注意,原文章中也提到了,使用过后要及时删除字符串指针。

 

于是就可以通过U2G(typeid(*this).name() + 6);得到了此类的中文名称。

那个+6是为了避去typeid前面不必要类型说明。只获得名称部分.

关注公众号,加入500人微信群,下载100G免费资料!

最新评论

热门文章
关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 04:50 , Processed in 0.056868 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部