Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В следующем примере демонстрируются эффекты буферизации. Вы могли ожидать, что программа выведет please wait, подождет 5 секунд и затем продолжит выполнение. Однако такое поведение необязательно, так как выходные данные помещаются в буфер.
// effects_buffering.cpp
// compile with: /EHsc
#include <iostream>
#include <time.h>
using namespace std;
int main( )
{
time_t tm = time( NULL ) + 5;
cout << "Please wait...";
while ( time( NULL ) < tm )
;
cout << "\nAll done" << endl;
}
Чтобы программа работала логично, объект cout должен опустошать себя перед выводом сообщения. Чтобы сохранить объект ostream , отправьте ему манипулятор flush :
cout <<"Please wait..." <<flush;
Это действие сохраняет буфер, гарантируя вывод сообщения до ожидания. Можно также использовать endl манипулятор, который очищает буфер и выводит канал возвращаемой строки каретки или можно использовать cin объект. Этот объект (с объектами cerr или clog ) обычно привязывается к объекту cout . Таким образом, любое использование cin (или объектов cerr или clog ) сохраняет объект cout .