• 6434阅读
  • 5回复

QDataStream   问题 [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2010-03-23
    QByteArray block;

    QDataStream out(&block,QIODevice::WriteOnly);

    out.setVersion(QDataStream::Qt_4_6);

    out<<"Hello World!";

    qDebug()<<QString(block);



为什么什么输出都没有呢?
离线dbzhang800

只看该作者 1楼 发表于: 2010-03-23
不妨打开 assistant,看看 QDataStream 的功能和用途先
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2010-03-23
我有看,但是我还是不能解释:

例如:

qDebug()<<QString("我我我").toUtf8().size();      //输出为9

QByteArray block;
QDataStream out(&block,QIODeceive::WriteOnly);
out.setVesion(QDataStream::Qt_4_3);
out<<QString("我我我").toUtf8();
qDebug()<<block.size();                                          //输出为13


为什么我用操作符  <<   把信息输入到QByteArray里时,
效果却不是那样呢?

上面为什么一个大小为9,经过QDataStream后就变为13了?
离线iiiyyyhhhsss

只看该作者 3楼 发表于: 2010-03-23
我现在有点明白

是不是

字符串一般 用QTextStream,而其它数据类型一般用QDataStream?
离线dbzhang800

只看该作者 4楼 发表于: 2010-03-23
Re:QDataStream   问题
引用第2楼iiiyyyhhhsss于2010-03-23 10:11发表的  :
我有看,但是我还是不能解释:
上面为什么一个大小为9,经过QDataStream后就变为13了?
.......


http://qt.nokia.com/doc/4.6/datastreamformat.html
离线iiiyyyhhhsss

只看该作者 5楼 发表于: 2010-03-23
thanks!
我已经明白如何用了

  QByteArray block;
  QDataStream out(&block,QIODevice::WriteOnly);
  out.setVersion(QDataStream::Qt_4_6);
  out<<quint16(17)<<QString("meyouheshe")<<quint16(23);

  QDataStream in(&block,QIODevice::ReadOnly);
  quint16 a;
  QString b;
  quint16 c;
  in>>a>>b>>c;
  qDebug()<<a<<b<<c;
快速回复
限100 字节
 
上一个 下一个