Пара вещей:
Когда вы готовы писать, вам нужно seekp()
вместо seekg()
, т.е.
mfile.seekp(ios_base::end);
Теперь проблема в том, чтоgetline()
звонки установят флаги потока (в частности, eof), и в результате поток не готов к дальнейшим операциям, вам нужно сначала очистить флаги!
попробуйте это:
string line;
mfile.seekg(ios_base::beg);
while( getline(mfile,line) ){
std::cout << line << endl;
}
mfile.seekp(ios_base::end); // seekp
mfile.clear(); // clear any flags
mfile << "Line 1" << endl; // now we're good
mfile << "Line 2" << endl;
mfile << "---------------------------------" << endl;
mfile.seekg(ios_base::beg);
while( getline(mfile,line) ){
std::cout << line << endl;
}
Кроме того, используйте std :: endl вместо "\ n", это приведет к сбросу буферов в файл при удобстве ОС ...