qt - c++返回值调用函数问题
大家讲道理
大家讲道理 2017-04-17 13:51:49
0
1
778

之前一直在写java,最近qt做个工具写c++,想都没想出现下面的代码:

QString qs = plainTextEdit->toPlainText(); //获取QString,这一步没问题
const char* buff = qs.toUtf8().data();

qs.toUtf8()函数把字符串QString转换为字节串QByteArray类型
QByteArray::data()则返回const char*类型

结果查看buff有时候对,有时候错。

然后分开写就没问题了:

QByteArray qba = qs.toUtf8();
const char* buff = qba.data(); 

c++不能连续调用函数么,为啥有时候是对的。求解析下这里面的机制。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(1)
刘奇

你检查下是不是toUtf8返回了一个临时对象,这个临时对象在调用完这一行就被销毁了,然后你的buff指向了这个临时对象的一段内存就不是合法的了。
而你下面分开调用时,qba直到它所在的作用域退出时才被销毁,所以没有出问题。
我个人建议使用string来保存这个data()。

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!