Перезапись данных в файле C ++ с использованием fstream - PullRequest
1 голос
/ 24 октября 2010

Привет, я хочу перезаписать содержимое (объект) в определенном файле. Я установил позицию, но всегда добавляю в конец файла.

код

 int InputIO::editPatient(int location,Obj P){

        int positon=location*sizeof(P);
        f.open("File.dat",ios::in|ios::out|ios::app|ios::binary|ios::ate);
        f.seekp(0,ios::beg);
        f.seekp(positon,ios::cur);
        f.write((char*)&P,sizeof(Movie));
        f.close();

        return 0;



        }

Ответы [ 2 ]

5 голосов
/ 24 октября 2010

Не используйте флаг ios::app (что означает append ). Когда вы используете этот флаг, он запрещает вам читать или записывать любой контент, который присутствовал в файле до того, как вы его открыли - вы можете добавить только новый контент до конца (и поскольку вы открыли его в режиме чтения + записи, вы можете перечитать то, что вы написали, и переписать, но вы все равно не можете получить данные до этого).

1 голос
/ 24 октября 2010

Просто решите это, нужно удалить ios :: app (Append) Append, всегда добавляйте в конец файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...