cerr

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

基本介紹

  • 中文名:cerr
  • 隸屬:ISO C標準庫的stderr
  • 作用:標準錯誤流,用於顯示錯誤訊息
  • 類型:函式
定義,區別,作用,

定義

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
// test.cpp#include <iostream>int main() {std::cout << "hello world---cout" << std::endl ;std::cerr << "hello world---cerr" << std::endl ;return 0;}

作用

比如,你的程式遇到調用棧用完了的威脅(無限,沒有出口的遞歸)。
你說,你到什麼地方借記憶體,存放你的錯誤信息?
所以有了cerr。其目的,就是在你最需要它的緊急情況下,還能得到輸出功能的支持。 緩衝區的目的,就是減少刷屏的次數——比如,你的程式輸出聖經中的一篇文章。不帶緩衝的話,就會每寫一個字母,就輸出一個字母,然後刷屏。有了緩衝,你將看到若干句子“同時”就出現在了螢幕上(由記憶體翻新到顯存,然後刷新螢幕)。

相關詞條

熱門詞條

聯絡我們