Compartilhar via


Efeitos do armazenamento em buffer

O exemplo a seguir mostra os efeitos do buffer. Você pode esperar o programa imprimir please wait, aguardar 5 segundos e, em seguida, continuar. No entanto, ele não necessariamente funcionará dessa forma porque a saída é armazenada em buffer.

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

Para fazer com que o programa funcione logicamente, o objeto cout deve se esvaziar quando a mensagem for exibida. Para liberar um objeto ostream, envie-o ao manipulador flush:

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

Esta etapa libera o buffer, garantindo que a mensagem seja impressa antes da espera. Você também pode usar o manipulador endl, que libera o buffer e gera um retorno de carro-avanço de linha ou você pode usar o objeto cin. Esse objeto (com os objetos cerr ou clog) geralmente é vinculado ao objeto cout. Assim, qualquer uso de cin (ou dos objetos cerr ou clog) libera o objeto cout.

Confira também

Fluxos de saída