QString转换为char*需要注意的问题


将QString转换为char*的过程中有一种错误用法需要注意:

QString  strName = "Hello world!";

char *p = strName.toLatin1().data();

 qDebug() << p;


此时输出为乱码,这是为什么呢?


因为QString 的 toLatin1() 返回的为一个临时的QByteArray,而直接用这个临时的QByteArray 的data()方法返回的自然是一个临时的指针,

在当前行执行完毕临时的区域就会销毁了,所以p指向的内容也就销毁了


正确的写法是:

QString  strName = "Hello world!";

QByteArray array = strName.toLatin1();

char *p = array.data();

 qDebug() << p;

需要将这个临时的QByteArray储存起来。


参考文档:http://www.4byte.cn/question/561018/clean-way-to-convert-qstring-to-char-not-const-char.html


欢迎指正!!!

你可能感兴趣的:(QT-QString)