Я читал cplusplus.com учебник по I/O. В конце он говорит, что буферы fstream синхронизируются с файлом на диске
Явно, с манипуляторами: Когда некоторые манипуляторы используются на потоки, происходит явная синхронизация. Эти манипуляторы: flush и endl.
и
Явно, с функцией-членом function sync(): Вызов функция члена потока sync(), которая не принимает никаких параметров, вызывает немедленная синхронизация. Эта функция возвращает значение int, равное -1, если поток не имеет никакого связанного буфера или в случае отказа. В противном случае (если буфер потока был успешно синхронизирован) возвращает 0.
в дополнение к нескольким другим неявным случаям (например, destroy и stream.close())
В чем разница между вызовами fstream:: flush() и fstream:: sync()? епсИ?
В моем коде я всегда использовал flush().
Документация по std:: flush():
Сброс потока буфера
Синхронизирует буфер, связанный с потоком к его контролируемой выходной последовательности. Это фактически означает, что все неписаные символы в буфере записываются в контролируемый как можно скорее ( "промыть" ).
Документация по std:: streambuf:: sync():
Синхронизировать входной буфер с источником символов
Он вызывается для синхронизации буфера потока с контролируемой последовательностью (например, файл в случае файловых потоков). Функция public member pubsync вызывает эту защищенную функцию-член для выполнения этого действия.
Простите меня, если это вопрос новичков; Я ноб.