C 中cout,cerr,clog的區別

2021-08-08 02:39:33 字數 836 閱讀 6402

c++標準庫定義了4個io物件,cin,cout,cerr,clog .cin 為標準輸入,cout,cerr,clog都是輸出流物件,三者有什麼區別呢?

cout 與cerr的主要區別是cout的輸出資訊可以被重定向,而cerr則只能輸出到標準輸出(顯示器)上。

例如下面程式編譯後生成test.exe   

//     test.cpp   

#include      

int   main()   

在命令列模式下鍵入下面的命令:   

test   >>cout.txt 

執行結果是:   

在生成的cout.txt檔案中輸出了"hello   world---cout"   

同時在顯示器上輸出了"hello   world---cerr"   

也就是說cout的輸出可以重定向到乙個檔案中,而cerr必須輸出在顯示器上。 

clog流也是標準錯誤流,作用和cerr一樣,區別在於cerr不經過緩衝區,直接向顯示器輸出資訊,而clog中的資訊存放在緩衝區,緩衝區滿或者遇到endl時才輸出.   

對於為什麼有cerr和clog

比如,你的程式遇到呼叫棧用完了的威脅(無限,沒有出口的遞迴)。

你說,你到什麼地方借記憶體,存放你的錯誤資訊?

所以有了cerr。其目的,就是在你最需要它的緊急情況下,還能得到輸出功能的支援。

緩衝區的目的,就是減少刷屏的次數——比如,你的程式輸出聖經中的一篇文章。不帶緩衝的話,就會每寫乙個字母,就輸出乙個字母,然後刷屏。有了緩衝,你將看到若干句子「同時」就出現在了螢幕上(由記憶體翻新到視訊記憶體,然後重新整理螢幕)。

C 中cout cerr clog的區別

之前一直在用,但就是沒在意兩者到底有啥卻別,今天又想到這個問題,總結下吧 以下的內容均是本人從網上查閱資料看來整理的,暫時還沒有查閱官方資料,不保證準確,歡迎討論 其實大家平常常會用的主要有三個 cout cerr clog,首先簡單介紹下三者。這三者在c 中都是標準io庫中提供的輸出工具 cout...

C 中cout,cerr,clog的區別

c 標準庫定義了4個io物件,cin,cout,cerr,clog cin 為標準輸入,cout,cerr,clog都是輸出流物件,三者有什麼區別呢?cout 與cerr的主要區別是cout的輸出資訊可以被重定向到檔案中,而cerr則只能輸出到標準輸出 顯示器 上。int main 但是cout可以...

C 中的long與C 中的long

微軟很厲害,c 是非常優秀的計算機語言,c 比c 還厲害,c c 本身不就包含四個 號嗎?而微軟發明了c c 中的long比c 中的long要long兩倍!不信你看 我正在使用.net寫乙個預約排隊的程式,因為一前通過vc編寫了乙個用於顯示登記資訊的控制項,現在使用c 重新預約程式,則必然要呼叫vc...