轉:c++裏關於cerr,clog,cout三者的區別

c++裏關於cerr,clog,cout三者的區別:c++

 

cerr(無緩衝標準錯誤)-----沒有緩衝,發送給它的內容當即被輸出程序員

clog(緩衝標準錯誤)--------有緩衝,緩衝區滿時輸出 cout-------------------------標準輸出 三個都是ostream類定義的輸出流對象, cout是在終端顯示器輸出,cout流在內存中對應開闢了一個緩衝區,用來存放流中的數據,當向cout流插入一個endl,不論緩衝區是否漫了,都當即輸出流中全部數據,而後插入一個換行符. cerr流對象是標準錯誤流,指定爲和顯示器關聯,和cout做用差很少,有點不一樣就是cout 一般是傳到顯示器輸出,但可以被重定向輸出到文件,而cerr流中的信息只能在顯示器輸出.函數

clog流也是標準錯誤流,做用和cerr同樣,區別在於cerr不通過緩衝區,直接向顯示器輸出信息,而clog中的信息存放在緩衝區,緩衝區滿或者遇到endl時才輸出. spa

 

 

轉載地址:http://blog.csdn.net/templxj/article/details/1496629 .net

 

關於緩衝區:調試

 

endl 是一個特殊值,稱爲操縱符,將它寫入輸出流時,具備輸出換行的效果,並刷新與設備相關聯的緩衝區。經過刷新緩衝區,用戶可當即看到寫入到流中的輸出。  程序員常常在調試過程當中插入輸出語句,這些語句都應該刷新輸出流。忘記刷新輸出流可能會形成輸出停留在緩衝區中,若是程序崩潰,將會致使程序錯誤推斷崩潰位置。 對象

 

那麼什麼是刷新緩衝區呢?到網上找到資料以下:blog

 

以緩衝方式打開一個文件時,往文件裏寫幾個字節,通常不會當即真正把這幾個字節寫入文件,只有當緩衝區滿時才真正寫盤。若是想在緩衝區滿以前寫盤保存,能夠作沖刷緩衝區動做。vps

下列行爲引起沖刷動做: 1)緩衝區滿時; 2)行輸出時遇endl,cerr或cin時; 3)執行沖刷函數; 4)關閉文件。內存

 

原文地址:http://blog.csdn.net/mvpsendoh/article/details/6025882

相關文章
相關標籤/搜索