Freigeben über


Pufferungseffekte

Das folgende Beispiel zeigt die Auswirkungen der Pufferung an. Sie erwarten das Programm, um please wait zu drucken, warten 5 Sekunden und anschließend fortfahren. Es funktioniert nicht unbedingt auf diese Weise jedoch da die Ausgabe gepuffert werden.

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

Um die Programmarbeit logisch zu machen, muss sich das cout-Objekt leeren wenn die Meldung angezeigt ist. Um ein ostream-Objekt zu leeren, senden Sie sie der flush an:

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

Dieser Schritt leert den Puffer und stellt den Meldungsdruck vor dem Wartevorgang sicher. Sie können den endl auch verwenden Manipulator, der den Puffer geleert und einem Wagenrücklauf/Zeilenvorschub ausgibt, oder Sie können das cin-Objekt verwenden. Dieses Objekt (mit den Objekten cerr oder clog ) wird normalerweise dem Objekt cout gebunden. Somit leert jede Verwendung von cin (oder cerr oder clog-Objekte) das cout-Objekt.

Siehe auch

Referenz

Ausgabestreams