有一个文件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重新编辑 ]