Метод flush
Метод flush класса ofstream принудительно записывает все данные, находящиеся в буфере потока, непосредственно в файл. Обычно данные записываются в файл не сразу, а накапливаются в буфере для повышения производительности. Метод flush позволяет инициировать эту запись вручную, не ожидая заполнения буфера или закрытия файла. Метод не принимает параметров и не возвращает значения.
Синтаксис
ofstream_name.flush();
Пример
Давайте откроем файл, запишем в него строку и сразу же сбросим буфер на диск с помощью метода flush:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream file("test.txt");
if (file.is_open())
{
file << "abcde";
file.flush();
cout << "Data flushed to file." << endl;
file.close();
}
return 0;
}
Результат выполнения кода:
"Data flushed to file."
Пример
Давайте рассмотрим ситуацию, когда метод flush вызывается перед чтением данных из того же файла другим потоком. Это гарантирует, что все записанные данные уже находятся на диске:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ofstream out("data.txt");
out << "12345";
out.flush();
out.close();
ifstream in("data.txt");
string res;
in >> res;
cout << res << endl;
in.close();
return 0;
}
Результат выполнения кода:
12345