バイナリモードでファイルの一部を置き換える際に問題があります。何らかの理由で、私のseekp()行がファイルポインタを目的の位置に置いていません。今は、ファイルの最後に新しい部分を追加します。バイナリモードでファイルの一部を置き換える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();
私は何か間違っていますか?
ありがとうございます。