QByteArray转QString需要注意的一个问题

QByteArray转换到QString不加注意就会转换不全的情况。

先看代码找问题

  • QString类提供Unicode字符串。
  • QByteArray类提供存放二进制数据。
    1
    2
    3
    4
    5
    6
    7
    QByteArray byteArray;
    byteArray += '1';
    byteArray += '2';
    byteArray += '\0';
    byteArray += '3';
    byteArray += '4';
    QString str(byteArray);

  看似上面代码没问题,但实际上并不能得出我们想要的结果。
  str的内容是”12”,而”\034”被剪掉了。于是找了下QString的说明文档,看到QString字符串的结尾和C风格的’\0’或0结尾相同