失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > QString转化为const char *出现乱码问题

QString转化为const char *出现乱码问题

时间:2021-04-06 04:47:54

相关推荐

QString转化为const char *出现乱码问题

对于Qt项目开发中,常常会遇到QString和const char*的转化问题,Qt也提供了响应的API接口,可以把QString转化为QByteArray,然后再转化为const char *,具体代码如下:

QString string("helloWorld");const char *str = string.toLatin1().data();

但是调用接口才发现,打印str时有时能够显示得到helloWorld有时候得到的却是乱码,通过查询文档发现调用toLatin1的过程中是把QString中的内容放到QByteArray中存储起来,如果再调用data的接口,放到QByteArray中的数据则会被清除(类似于栈变量析构),因此将上述代码变化一下则可以正确转化:

QString string("helloWorld");QByteArray array = string.toLatin1();const char *str = array.data();

但是存在一个问题,如果是这样的场景,如果const char*存在的生命周期比QByteArray要长的话,还是会出现const char*中的数据会被释放,const char*的数据乱码的情况,解决的方法可以额外深拷贝出一份数据保存下来或者用一个数组保存数据(如果是在对象中,将数组定义成成员变量就行了)

如果觉得《QString转化为const char *出现乱码问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。