Я понимаю, что по умолчанию все потоковые операции ввода-вывода, поддерживаемые C++, буферизуются.
Это означает, что данные для вывода помещаются в буфер до его заполнения, а затем отправляются на устройство вывода, аналогично для ввода данные считываются, когда буфер пуст... все это делается для того, чтобы количество дорогостоящих систем звонки можно свести к минимуму.
Но как проверить это поведение в действии. Я имею в виду следующий код
int main()
{
cout << "Hello world\n";
return 0
}
При чем тут буферизация? Я знаю, что происходит буферизация, но как это объяснить? Вывод сразу виден на экране, так что же может быть примером кода, чтобы действительно увидеть буферный ввод-вывод в действии?
std::cout
буферизуется нормально. (Это отличается отstdout
в C, который буферизирует строки, если он подключен к интерактивному устройству, и полностью буферизируется в противном случае. В C++ нет концепции буферизации строк; использованиеstd::endl
эффективно имитирует ее. .) - person James Kanze   schedule 09.07.2012