cerr

Cerr 一個ostream對象,關聯到標準錯誤,通常寫入到與標準輸出相同的設備。默認情況下,寫到cerr的數據是不緩衝的。Cerr通常用於輸出錯誤信息與其他不屬於正常邏輯的輸出內容。

定義

std::cerr(console error)是ISO C++標準錯誤輸出流,對應於ISO C標準庫的stderr。

與std::cout不同,ISO C++要求當cerr被初始化後,cerr.flags() & unitbuf非零(保證流在每次輸出操作後被刷新),且cerr.tie()返回&cout。   即cerr默認和cout同步但無緩衝。

區別

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

例如下面代碼編譯後生成test.exe

作用

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

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

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

相關詞條

相關搜尋

熱門詞條

聯絡我們