Účinky ukládání do vyrovnávací paměti
Následující příklad ukazuje účinek ukládání do vyrovnávací paměti.By se dalo očekávat program vytiskl please wait, počkejte 5 sekund a potom pokračovat.Nebude fungovat nemusí být tímto způsobem, protože výstup 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;
}
Chcete-li program práce logicky, cout objektu musíte vyprázdnit sám po se zobrazí zpráva.Vyprázdnění ostream objekt, odeslat ji flush manipulator:
cout << "Please wait..." << flush;
Tento krok se vyprázdní vyrovnávací paměť, zajištění, že zpráva se vytiskne před čekání.Můžete použít také endl manipulator, která vyprázdní vyrovnávací paměť a výstupy return–linefeed přepravu, nebo můžete použít cin objektu.Tento objekt (s cerr nebo clog objekty) je obvykle vázáno cout objektu.Proto jakékoli použití cin (nebo cerr nebo clog objekty) vyprázdní cout objektu.