Чтобы лучше понять буферизованные потоки в С++, я хотел бы написать простую программу, в которой буфер std::cout
НЕ сбрасывается до завершения. Поскольку я прочитал, что std::cout
очищается при нормальном завершении, я попытался сбросить ошибку времени выполнения. Я также избегал использования std::endl
, как я понимаю, что заставляет флеш. Первая попытка:
//file noflush.cpp
#include <iostream>
int main() {
std::cout << "Don't write me to the console!";
throw 0;
}
Скомпилировать с g++, вызвать из терминала:
$ ./noflush
libc++abi.dylib: terminating with uncaught exception of type int
Don't write me to the console!Abort trap: 6
Даже когда я заставляю ошибку времени выполнения, кажется, что буфер по-прежнему загорается при завершении. Возможно ли "запрячь" некоторые данные в буфере, оставив его неписанным для устройства?