搜尋

首頁  >  問答  >  主體

qt - c++返回值调用函数问题

之前一直在写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++不能连续调用函数么,为啥有时候是对的。求解析下这里面的机制。

大家讲道理大家讲道理2782 天前833

全部回覆(1)我來回復

  • 怪我咯

    怪我咯2017-04-17 13:53:49

    你檢查下是不是toUtf8返回了一個臨時對象,這個臨時對像在調用完這一行就被銷毀了,然後你的buff指向了這個臨時對象的一段內存就不是合法的了。
    而你下面分開呼叫時,qba直到它所在的作用域退出時才被銷毀,所以沒有出問題。
    我個人建議使用string來保存這個data()。

    回覆
    0
  • 取消回覆