Sdílet prostřednictvím


Účinky ukládání do vyrovnávací paměti

Následující příklad ukazuje účinky ukládání do vyrovnávací paměti. Můžete očekávat, že se program vytiskne please wait, počká 5 sekund a pak bude pokračovat. Nebude to ale nutně fungovat tímto způsobem, protože výstup je uložen do vyrovnávací paměti.

// 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 fungoval logicky, cout musí se objekt při zobrazení zprávy vyprázdnit. Pokud chcete objekt ostream vyprázdnit, odešlete ho manipulátoru flush :

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

Tento krok vyprázdní vyrovnávací paměť a zajistí, že se zpráva vytiskne před čekáním. Můžete také použít endl manipulátor, který vyprázdní vyrovnávací paměť a výstupy kanálu návratového řádku řádku, nebo můžete použít cin objekt. Tento objekt (s cerr objekty clog ) je obvykle svázaný s objektem cout . Jakékoli použití cin (nebo cerr clog objektů) proto vyprázdní cout objekt.

Viz také

Výstupní streamy