Udostępnij za pośrednictwem


Effects of Buffering

W poniższym przykładzie pokazano efekty buforowania. Możesz oczekiwać, że program będzie drukować please wait, poczekać 5 sekund, a następnie kontynuować. Niekoniecznie będzie to jednak działać w ten sposób, ponieważ dane wyjściowe są buforowane.

// 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;
}

Aby program działał logicznie, cout obiekt musi być pusty po wyświetleniu komunikatu. Aby opróżnić ostream obiekt, wyślij go flush do manipulatora:

cout <<"Please wait..." <<flush;

Ten krok opróżnia bufor, zapewniając, że komunikat jest wyświetlany przed oczekiwaniem. Można również użyć endl manipulatora, który opróżnia bufor i wyprowadza karetki zwrotnej linii, lub można użyć cin obiektu . Ten obiekt (z obiektami lubclog) jest zwykle powiązany z cerr obiektemcout. W związku z tym każde użycie cin (lub obiektów) clog cerr opróżnia cout obiekt.

Zobacz też

Strumienie wyjściowe