关于QString.toXXX错误用法

来源:互联网 发布:职场新人 知乎 编辑:程序博客网 时间:2024/05/17 23:35

曾经你不是也是这样用的:


QString str("i am boy");

const char *p = str.toLocal8Bit().data();


看起来是不是很嚣张.

可是很多时候我们发现是错的O O

原因是:str.toLocal8Bit()返回一个QByteArray值而这个值只是一个临时变量当他再调用的.data()里返回一个指向QBtyeArray数据的指针p,

当这句话运行完了这个QByteArray临时变量也就析构了,所以指针p指向的是未定义块,也许也是对的,但........你懂的


应该用:

QBtyeArray array = str.toLocal8Bit();

const char *p = array.data();

你也可以这样

写在后面,有些人直接用str.toSdtString()然后发现出来的是错的,就就是没看manul的后果   - -!

原创粉丝点击