之前用endl一直以為它只是乙個回車換行的功能,剛剛才知道原來endl還有乙個功能使用來重新整理緩衝區的。除了endl之外,c++中還有ends,flush,unitbuf,nounitbuf。為什麼要重新整理緩衝區呢?
一句話,為了讓緩衝區的資訊立即強制輸出。
如: cout << "aaa" << endl;和 cout << "aaa";都能將aaa輸出,前乙個除了多了乙個換行外,它的aaa是被手動強制輸出的,而後便乙個aaa是系統每隔一段時間進行檢測輸出的。由於間隔比較短,讓人以為和第一種一樣,下面有一段**讓你對重新整理緩衝有明顯的概念。
// test.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include #include using namespace std;
int _tmain(int argc, _tchar* argv)
{ setvbuf( stdout, null, _iolbf, 1024 ); //設定控制台輸出為行快取模式,把緩衝區與流相關
cout <<"hello world\n";
sleep(5000);
cout <<"leeboy" <
所以程式設計要形成好的習慣,多使用endl
c 中為什麼重新整理緩衝區
之前用endl一直以為它只是乙個回車換行的功能,剛剛才知道原來endl還有乙個功能使用來重新整理緩衝區的。除了endl之外,c 中還有ends,flush,unitbuf,nounitbuf。為什麼要重新整理緩衝區呢?一句話,為了讓緩衝區的資訊立即強制輸出。如 cout aaa endl 和 cou...
重新整理緩衝區
關於重新整理緩衝區,目前的我還沒看到有什麼必要,因為感覺不用函式重新整理的就很普遍啦 首先說一說什麼叫緩衝區 在執行printf 輸出函式的時候,將要輸出的東西會發向輸出緩衝區 在c 裡叫輸出流 在執行輸入的時候,將要輸入的東西會發向輸入緩衝區 在c 裡叫輸入流 那什麼又是重新整理緩衝區呢 重新整理...
緩衝區(1) 為什麼會有緩衝區(快取)?
緩衝區是為了讓低速的輸入輸出裝置和高速的使用者程式能夠協調工作,並降低輸入輸出裝置的讀寫次數。使用者程式的執行速度可以看做 cpu 的執行速度,如果沒有各種硬體的阻礙,理論上它們是同步的。例如,我們都知道硬碟的速度要遠低於 cpu,它們之間有好幾個數量級的差距,當向硬碟寫入資料時,程式需要等待,不能...