有一个文件PhoneBook.dat,里面是之前用QDataStream的>>命令分别写入了一串
数据(out<<联系人总数<<联系人1编号<<联系人1姓名<<联系人1号码<<联系人2编号...)。
现在我想修改里面某项的内容,有
没有简易的方法呢? 
我现在预想的方法是个笨方法:首先读出每一项内容(in>>联系人总数>>联系人1编号>>联系人1姓名>>联系人1号码>>联系人2编号...) ,之后修改某一项,再建立一个QDataStream对象把修改和没修改的数据覆盖在原数据上(out<<联系人总数<<联系人1编号<<联系人1姓名<<联系人1号码<<联系人2编号...)。
但是它不是我想的那样覆盖,而是在之前的数据之后加入了这些数据。 
比如,原来是:2 01 A 10001 02 B 10002,现在修改联系人1的号码为10000,之后就变成了2 01 A 10001 02 B 10002 2 01 A 10000 02 B 10002。 
各位大侠,有什么方法解决吗? 
- QFile PhoneBook(tr("PhoneBook.dat")); 
 - PhoneBook.open(QIODevice::ReadWrite); 
 - QDataStream in(&PhoneBook); 
 - in>>ContactsAmount;//读取总数 
 - contact NewContact[ContactsAmount];//建立总数个联系人(结构体)数组 
 - for(int i=0;i<ContactsAmount;i++)//读取 
 - { 
 - in>>NewContact.Num>>NewContact.Name>>NewContact.PhoneNum; 
 - } 
 - if(CursorPos==2)//修改姓名或号码 
 - { 
 - NewContact[ContactNum-1].Name=EditStr; Name=EditStr; 
 - } 
 - else if(CursorPos==3) 
 - { 
 - NewContact[ContactNum-1].PhoneNum=EditStr; PhoneNum=EditStr; 
 - } 
 - QDataStream out(&PhoneBook); 
 - out<<ContactsAmount; 
 - for(int i=0;i<ContactsAmount;i++)//写入 
 - { 
 - out<<NewContact.Num<<NewContact.Name<<NewContact.PhoneNum; 
 - }
 
  [ 此帖被septem8918在2011-04-18 21:28重新编辑 ]