fstream in;
in.open("issue.dat",ios_base::in|ios_base::binary);
if(!in)
{ cout<<"打开失败";return;}
fstream temp;
temp.open("temp.dat",ios_base::out|ios_base::binary);
Issue issue;
in.read((char*)&issue,sizeof(issue));
while(!in.eof()) //将文件内容修改后临时寸到另一个文件中
{
if(issue.IssueCode==IssueCode&&issue.IssueNum
in.read((char*)&issue,sizeof(issue));//遇到过期的期刊,则不写入临时文件,
Num++;
continue; //直接读取下一个数据
}
temp.write((char*)&issue,sizeof(issue));
in.read((char*)&issue,sizeof(issue));
}
in.close();
temp.close(); //修改完成,将原文件清空,并将临时文件内容复制回原文件
temp.open("temp.dat",ios_base::in|ios_base::binary);
if(!temp)
{ cout<<"打开失败";return;}
ofstream out;
out.open("issue.dat",ios_base::out|ios_base::binary);
temp.read((char*)&issue,sizeof(issue));
while(!temp.eof()) //将文件内容修改后临时寸到另一个文件中
{
out.write((char*)&issue,sizeof(issue));
temp.read((char*)&issue,sizeof(issue));
}//完成复制
out.close();
temp.close();
没有简单的方法:
只能全部读出来,删除某一行,然后写到另外的文件中
打开直接删
退出时提示是否保存点否
如果此类操作非常多,分析下,尽量使用数据库