将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
欢迎指正!!!