[求教]使用QDataStream包装QByteArray,为什么数据写入很诡异?

鸿悯 2010-05-11 10:51:55
问个问题,使用QDataStream包装QByteArray,为什么数据写入很诡异?代码如下:
#include <QtCore/QCoreApplication>
#include <QDataStream>
#include <QByteArray>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QByteArray ba;
QDataStream in(&ba, QIODevice::WriteOnly);
in.setVersion(QDataStream::Qt_4_6);
QString msg = "hi!";
in << msg;
QString str(ba); /* str = "" ??? ba = {"" size=10} ????*/
return a.exec();
}
...全文
475 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tingsking18 2010-05-12
  • 打赏
  • 举报
回复
学习了
dext 2010-05-12
  • 打赏
  • 举报
回复
我先解释一下为什么
QDataStream 包装的 QByteArray
结构是 内容长度 和 内容
内容长度 是 四个字节 uint
内容是 双字节char (也许是 unicode)
所以就是 4 + 3 * 2 = 10

至于为什么 是 空,是因为前四个字节是 00 00 00 06
遇到第一个 00 就以为是 字符串已经结尾了。

其实 你为什么不用 QTextStream 呢?
soilde123 2010-05-11
  • 打赏
  • 举报
回复
QString str(ba);
这句出问题了

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧