1. 程式人生 > >cerr、clog、cout的區別

cerr、clog、cout的區別

cout是輸入記憶體緩衝區再到輸出裝置。
cerr是直接到輸出裝置。
clog是輸入記憶體緩衝區但是不到輸出裝置。

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

例如下面程式編譯後生成test.exe   
  //     test.cpp   
    
  #include   <iostream.h>   
    
  int   main()   
  {   
              cout   <<   "hello   world---cout"   <<   endl   ;   
              cerr   <<   "hello   world---cerr"   <<   endl   ;   
              return   0;   
  }   
    
    
  在命令列模式下鍵入下面的命令:   
  test   >>cout.txt   
    
  執行結果是:   
  在生成的cout.txt檔案中輸出了"hello   world---cout"   
  同時在顯示器上輸出了"hello   world---cerr"   
  也就是說cout的輸出可以重定向到一個檔案中,而cerr必須輸出在顯示器上。
clog流也是標準錯誤流,作用和cerr一樣,區別在於cerr不經過緩衝區,直接向顯示器輸出資訊,而clog中的資訊存放在緩衝區,緩衝區滿或者遇到endl時才輸出.   

對於為什麼有cerr和clog
比如,你的程式遇到呼叫棧用完了的威脅(無限,沒有出口的遞迴)。

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

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

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

相關推薦

【C++】coutcerrclog之間的區別

stream 標準io lsp 錯誤輸出 文件 出現 消息 有效 iostream cout、cerr、clog三者都是標準IO庫中提供的輸出工具。 但是cout是支持重定向操作的。比如freopen()對於cout有效。 clog和cerr主要用於錯誤輸出。 因此,如果將

cerrclogcout區別

cout是輸入記憶體緩衝區再到輸出裝置。 cerr是直接到輸出裝置。 clog是輸入記憶體緩衝區但是不到輸出裝置。 cerr與cout的主要區分就是,cout輸出的資訊可以重定向,而cerr只能輸出到標準輸出(顯示器)上。    例如下面程式編譯後生成test.exe   

C++中:coutcerrclog區別

轉自:https://blog.csdn.net/garfield2005/article/details/7639833   之前一直在用,但就是沒在意兩者到底有啥卻別,今天又想到這個問題,總結下吧(以下的內容均是本人從網上查閱資料看來整理的,暫時還沒有查閱官方資料,不保證準確,

c++中輸出流coutcerrclog區別

本人菜雞一個,初識c++,從深鑑科技給的main.cc檔案中開始學習c++,不懂輸出流控制,在網上查了資料後整理的:c語言標準輸出就printf一個,但是c++意思就是c的加強版唄,當然輸出自然可以多一點,有cout、cerr、clog,區別就在於三個都能做輸出,但是cout

malloccallocrealloc和alloca各種的區別

calloc 一次 單元 不支持 new span 初始化 har 堆棧 需要先包含頭文件 #include"malloc.h" malloc是標準的在堆中開辟新的空間 比如 char *pt=(char *)malloc(10*sizeof(char)); 需要free(

getContextPathgetServletPathgetRequestURI的區別

request 執行 result web print 名稱 ati 輸入 pri 假定你的web application名稱為example,你在瀏覽器中輸入請求路徑: https://localhost:8080/example/main/edit.jsp 則執行

(轉載)display:inlineblockinline-block的區別

order label doc class 先後 padding str 如何實現 col display:block就是將元素顯示為塊級元素.   block元素的特點是:  總是在新行上開始;  高度,行高以及頂和底邊距都可控制;  寬度缺省是它的容器的100

call() apply() bind()方法的作用和區別

調用 權威指南 () 使用 func 開始 把他 對象 bsp 從一開始,我是在書上看到關於bind()、call() 和 apply(), 不過長久以來,在工作中與網上接觸到了很多關於這三個方法的使用場景,對這三個方法也算是比較熟悉了。所以把他們的作用和區別簡單闡述一下!

JS中constvar和let區別

方法 pre 命令 con 使用 它的 comm 作用 影響 在JavaScript中有三種聲明變量的方式:var、let、const。 1.const 聲明創建一個只讀的常量。這不意味著常量指向的值不可變,而是變量標識符的值只能賦值一次,必須初始化。 const b

jQuery 的 width()height()innerWidth()innerHeight()outWidth()outHeight() 的區別

order head ges alt mar inner 顯示 round out jQuery width() 和 height() 方法 width() 方法設置或返回元素的寬度(不包括內邊距、邊框或外邊距)。 height() 方法設置或返回元素的高度(不包括內邊距、

WCFWebAPIWCFRESTWebService之間的區別

pipes asmx 平板電腦 bind template windows服務 創建 通過 soa 在.net平臺下,有大量的技術讓你創建一個HTTP服務,像Web Service,WCF,現在又出了Web API。在.net平臺下,你有很多的選擇來構建一個HTTP Ser

數組去重,callapplybind之間的區別,this用法總結

步驟 -- 之間 undefined 定義 ply clas turn 需要 一、數組去重,直接寫到Array原型鏈上。 1 //該方法只能去除相同的數字 不會去判斷24和‘24‘是不同的 所有數字和字符串數字是相同是重復的 2 Array.prototype

DataStage中mergelookupjoin的區別與聯系

處理過程 key 占用內存 效率 功能 要求 過程 事實表 lookup 三者功能類似,都可以將表連接起來進行輸出。 區別主要體現在性能上。 lookup就是一個表在另一個表中找,處理過程都在內存進行,因此占用內存較多,一般大事實表和小緯表用這種方式關聯效率高。 merge

TCPUDPHTTPSOCKET之間的區別

安全 其他 出錯 tcp、udp 應用程序 網絡層 傳輸協議 客戶端 連接 IP:網絡層協議; TCP和UDP:傳輸層協議; HTTP:應用層協議; SOCKET:TCP/IP網絡的API。 TCP/IP代表傳輸控制協議/網際協議,指的是一系列協議。 TCP和UDP使用IP

varletconst的區別,已經作用範圍。

color fig efi 一個 註意 blog 問題 輸出 立即執行 在es5中一般經常使用的變量有兩個級別,一個是用var聲明的全局級別的變量,另外一個是函數級別是用var生命在函數內的。本文中將詳細講解我對es6中的const和let的區別。 let的使用以及作用範圍

URIURLURN區別和聯系

ref 都是 urn 我們 ems 不一定 gen ner tel   URI,URL,URN 從上面的那幅圖可以看出來,一共有三個不同的概念URI,URL,URN。這討論這樣的問題時,最好的方法就是回到原點啊,這裏我們在RFC 3986: Uniform Resource

DASNASSAN之間的區別

das nas san NAS:網絡儲存設備 (Network Attached Storage,NAS),是一種專門的資料儲存技術的名稱,它可以直接連接在電腦網絡上面,對不同操作系統的使用者提供了集中式資料存取服務NAS的優點:NAS設備一般支持多計算機平臺,用戶通過網絡支持協議可進入相同的文檔

分針網——每日分享:display:inlineblockinline-block的區別

http://www.f-z.cn/id/209 display:block 將元素顯示為塊級元素,特點是:

JS中innerHTMLouterHTMLinnerText outerTextvalue的區別與聯系?jQuery中的text()html()和val()

chrom html標簽 sel detail put 替換 not 內容 tail 一、JS中innerHTML、outerHTML、innerText 、outerText、value的區別與聯系?jS中設置或者獲取所選內容的值:①innerHTML :屬性設置或返回該

淺談MVCMVPMVVM架構模式的區別和聯系

.html csdn 獲取 視圖 viewmodel url title tle htm 淺談MVC、MVP、MVVM架構模式的區別和聯系 學習了:http://www.cnblogs.com/guwei4037/p/5591183.html http://blog.csd