複製鏈接
請複製以下鏈接發送給好友

cerr

鎖定
Cerr 一個iostream對象,關聯到標準錯誤,通常寫入到與標準輸出相同的設備。默認情況下,寫到cerr的數據是不緩衝的。Cerr通常用於輸出錯誤信息與其他不屬於正常邏輯的輸出內容。
中文名
cerr
隸    屬
ISO C標準庫的stderr
作    用
標準錯誤流,用於顯示錯誤消息
類    型
函數

目錄

cerr定義

std::cerr(console error)是ISO C++標準錯誤輸出流,對應於ISO C標準庫的stderr。
與std::cout不同,ISO C++要求當cerr被初始化後,cerr.flags & unitbuf非零(保證流在每次輸出操作後被刷新),且cerr.tie返回&cout。 [1]  即cerr默認和cout同步但無緩衝。

cerr主要區別

cerr對應標準錯誤流,用於顯示錯誤消息。默認情況下被關聯到標準輸出流,但它不被緩衝,也就説錯誤消息可以直接發送到顯示器,而無需等到緩衝區或者新的換行符時,才被顯示。一般情況下不被重定向。
例如下面代碼編譯後生成test.exe
// test.cpp
#include <iostream>
int main() {
std::cout << "hello world---cout" << std::endl ;
std::cerr << "hello world---cerr" << std::endl ;
return 0;
}

cerr作用

比如,你的程序遇到調用棧用完了的威脅(無限,沒有出口的遞歸)。
你説,你到什麼地方借內存,存放你的錯誤信息?
所以有了cerr。其目的,就是在你最需要它的緊急情況下,還能得到輸出功能的支持。 緩衝區的目的,就是減少刷屏的次數——比如,你的程序輸出一篇文章。不帶緩衝的話,就會每寫一個字母,就輸出一個字母,然後刷屏。有了緩衝,你將看到若干句子“同時”就出現在了屏幕上(由內存翻新到顯存,然後刷新屏幕)。
參考資料
  • 1.    ISO/IEC(E) 14882:2011 27.4.2