緩衝的效果
下列範例會示範緩衝的效果。 您可能會想要列印的程式please wait,等候 5 秒為單位,然後再繼續。 也就一定無法如此一來,不過,因為輸出都會進入緩衝。
// 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;
}
若要可程式邏輯上,使用cout的訊息出現時,物件必須清空本身。 如果要清除ostream物件,將其傳送flush manipulator:
cout << "Please wait..." << flush;
這個步驟會清除緩衝區,確保在等候之前先列印的郵件。 您也可以使用endl manipulator,這會清除緩衝區,並將輸出的換行字元 return–linefeed,或者您也可以使用cin物件。 這個物件 (與cerr或clog物件) 通常會繫結至cout物件。 因此,任何使用cin (或cerr或clog物件) 會清除cout物件。