cerr和cout的區別

2021-06-23 03:37:14 字數 556 閱讀 2188

std::cerr是標準錯誤輸出流,不需要快取,直接顯示在顯示器上,而且只能顯示到顯示器上,即std::cerr流不能轉向。

std::cout需要緩衝區(目的是為了減少螢幕重新整理次數,一次全部顯示),std::cout流可以轉向,例如可將cout流流向檔案操作中去。

1.區別

cout對應於標準輸出流,預設情況下是顯示器。這是乙個被緩衝的輸出,可以被重定向。

cerr對應標準錯誤流,用於顯示錯誤訊息。預設情況下被關聯到標準輸出流,但它不被緩衝,也就說錯誤訊息可以直接傳送到顯示器,而無需等到緩衝區或者新的換行符時,才被顯示。一般情況下不被重定向。 2.

為什麼要用cerr

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

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

所以有了cerr。其目的,就是在你最需要它的緊急情況下,還能得到輸出功能的支援。 緩衝區的目的,就是減少刷屏的次數——比如,你的程式輸出聖經中的一篇文章。不帶緩衝的話,就會每寫乙個字母,就輸出乙個字母,然後刷屏。有了緩衝,你將看到若干句子「同時」就出現在了螢幕上(由記憶體翻新到視訊記憶體,然後重新整理螢幕)。

cout和cerr的區別

問題 c 中輸出通常資訊的函式為cout,比如 std cout hello world 在異常處理機制中則使用cerr來輸出錯誤資訊,比如 std cerr error too many arguments n 那麼,cout和cerr的區別是什麼呢?解決辦法 1.摘錄一段 c primer 第五...

C 中cout和cerr的區別

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

c 中cout和cerr的區別

其實大家平常常會用的主要有三個 cout cerr clog,首先簡單介紹下三者。這三者在c 中都是標準io庫中提供的輸出工具 至於有關的過載問題在此不討論 cout 寫到標準輸出的ostream物件 cerr 輸出到標準錯誤的ostream物件,常用於程式錯誤資訊 clog 也是輸出標準錯誤流 這...