Все, что я хочу сделать, это переместить указатель «put» из конца файла в точку «X» за конец файла.Как переместить X-байты из конца файла и отредактировать его? (Использование потока в C++)
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ofstream ofile;
//Assuming "file.dat" does not exist
ofile.open("file.dat", ios::binary|ios::app);
int x = 12;
ofile.write((char*) &x, sizeof(int));
ofile.seekp(-4, ios::cur);
x = 10;
ofile.write((char*) &x, sizeof(int));
ofile.close();
x = 0;
ifstream ifile("file.dat", ios::binary);
ifile.read((char*) &x, sizeof(int));
cout<<x; //This line should display 10
return 0;
}
Однако выходные дисплеи 12 ...
Я читал много статей о StackOverflow, которые действительно упоминал, что 'искать' на 'положить' указатель, я должен использовать «ios :: ate», а не «ios :: app».
Но я даже пытался использовать следующие вместо этого, и я до сих пор не везло ...
ofile.open("file.dat", ios::binary|ios::ate);
Это то, что я делаю неправильно? Есть ли другой способ переместить указатель «put» назад как таковой?
Это только упрощенная версия того, что не работает в проекте мне нужно сделать для школы ...
Любая помощь будет оценена ... Спасибо ...
Вот что 'ИОС :: app' делает - [искать до конца потока перед каждой записью] (http://en.cppreference.com/w/cpp/io/ios_base/openmode) –