Pufferungseffekte

Im folgenden Beispiel werden die Effekte von Pufferung veranschaulicht. Sie erwarten wahrscheinlich, dass das Programm please waitausgibt, 5 Sekunden wartet, und dann den nächsten Vorgang ausführt. Das Programm wird aber nicht unbedingt so funktionieren, weil die Ausgabe gepuffert wird.

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

Damit das Programm logisch funktioniert, muss sich das cout -Objekt selbst leeren, wenn die Meldung angezeigt werden soll. Um ein ostream -Objekt zu leeren, senden Sie ihm den flush -Manipulator:

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

In diesem Schritt wird der Puffer geleert, wodurch sichergestellt wird, dass die Meldung vor dem Wartevorgang ausgegeben wird. Sie können auch den Manipulator verwenden, der den endl Puffer löscht und einen Wagenrücklauffeed ausgibt, oder Sie können das cin Objekt verwenden. Dieses Objekt (mit dem cerr - oder dem clog -Objekt) ist in der Regel mit dem cout -Objekt verknüpft. Daher wird bei jeder Verwendung von cin (oder einem der Objekte cerr oder clog ) das cout -Objekt geleert.

Weitere Informationen

Ausgabe Streams