我正在尝试通过搜索他的roll no来更新学生记录,然后使用tellg()和seekp()移动到该位置。但每当我尝试覆盖时,它都会删除以前的记录。
int pos=0;
Student obj;
ifstream readfile("New.dat",ios::binary);
cout<<"Enter Roll # of student";
cin>>a;
while(!readfile.eof())
{
readfile.read((char *) &obj, sizeof(obj));
if(obj.getRoll()==a)
{
if(!readfile.eof())
{
pos=readfile.tellg();
obj.show();
cout<<"PLease Enter New Details of Student \n";
obj.get();
readfile.close();
ofstream file("New.dat",ios::binary);
file.seekp(pos);
file.write((char*)&obj,sizeof(obj));
cout<<"Student Record Has Been Updated \n";
countt=1;
}
}
}
file.close();
答案 0 :(得分:0)
您需要记录之前文件中的位置记录,然后您可以返回相同的位置再次将对象写出来。
将pos=readfile.tellg();
行移至readfile.read
行之前。