能发布自做的视频网站,云服务器使用教程,旅行社网站模板,透明图片在线制作对于Qt项目开发中#xff0c;常常会遇到QString和const char*的转化问题#xff0c;Qt也提供了响应的API接口#xff0c;可以把QString转化为QByteArray#xff0c;然后再转化为const char *,具体代码如下#xff1a;
QString string(helloWorld);
const cha… 对于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*的数据乱码的情况解决的方法可以额外深拷贝出一份数据保存下来或者用一个数组保存数据(如果是在对象中将数组定义成成员变量就行了)