• 5641阅读
  • 1回复

这是Qt的设计缺陷,亦或是用法不正确? [复制链接]

上一主题 下一主题
离线mewjerry
 
只看楼主 倒序阅读 楼主  发表于: 2010-07-17
直接上代码了。

  1.     QDataStream TempHeader(&TargetFile);
  2.     TempHeader.setByteOrder(QDataStream::LittleEndian);
  3.     int check=TempHeader.skipRawData(fnt_offset+7-0x200);
  4.     quint32 HeaderSize=0;
  5.     TempHeader >> HeaderSize;
  6.     check=(HeaderSize-8)/8/325;
  7.     FileNameStr *FNT=new FileNameStr[check];
  8.     FileNameStr First;
  9.     QDataStream File(&TargetFile);
  10.     File.setByteOrder(QDataStream::LittleEndian);
  11.     File.skipRawData(fnt_offset+8);
  12.     quint32 i=0;
  13.     File >> i;


重点如下:

用一个QFile的引用分别初始化两个QDataStream,两个QDataStream的输出定位被同步了。

换句话说,从一个文件弄出两个流,A流输出了120bytes,B流还没输出,就已经不见了前120Bytes。

不知是我用法有误还是Qt这里设计的和我想象有所出入,现在不想让两个流被同步,求解。
离线dbzhang800

只看该作者 1楼 发表于: 2010-07-17
引用楼主mewjerry于2010-07-17 00:14发表的 这是Qt的设计缺陷,亦或是用法不正确? :
直接上代码了。
[code]
    QDataStream TempHeader(&TargetFile);
    TempHeader.setByteOrder(QDataStream::LittleEndian);
.......


用法不正确,两个dataStream 操作同一个QIODevice,当然要这样了。和你自己写两个对象对同一个QIODevice对象调用 read、readline等完全一样
快速回复
限100 字节
 
上一个 下一个