我在以二进制模式替换文件的一部分时遇到了一些麻烦。由于某种原因,我的 seekp() 行没有将文件指针放在所需的位置。现在它将新内容附加到文件的末尾,而不是替换所需的部分。
long int pos;
bool found = false;
fstream file(fileName, ios::binary|ios::out|ios::in);
file.read(reinterpret_cast<char *>(&record), sizeof(Person));
while (!file.eof())
{
if (record.getNumber() == number) {
pos=file.tellg();
found = true;
break;
}
// the record object is updated here
file.seekp(pos, ios::beg); //this is not placing the file pointer at the desired place
file.write(reinterpret_cast<const char *>(&record), sizeof(Person));
cout << "Record updated." << endl;
file.close();
难道我做错了什么?
提前非常感谢。