cerr 和 cout 的區別是什么??


RT,我看了C++primer,可這個問題還是不是很清楚,清大家幫個忙,謝謝!

12 个解决方案

#1


cout寫入標准輸出

cerr  錯誤輸出 一般用來提示錯誤的

#2


cerr是用於輸出錯誤信息的,cout是正常輸入,一般情況下cerr和cout都指向一個地方,所以看不出區別。就像在C里同樣有stdout和stderr。另外好像cerr是無緩沖的,不會丟失信息。

#3


c++里關於cerr,clog,cout三者的區別:

cerr(無緩沖標准錯誤)-----沒有緩沖,發送給它的內容立即被輸出

clog(緩沖標准錯誤)--------有緩沖,緩沖區滿時輸出

cout-------------------------標准輸出

三個都是ostream類定義的輸出流對象,

cout是在終端顯示器輸出,cout流在內存中對應開辟了一個緩沖區,用來存放流中的數據,當向cout流插入一個endl,不論緩沖區是否漫

了,都立即輸出流中所有數據,然后插入一個換行符.

cerr流對象是標准錯誤流,指定為和顯示器關聯,和cout作用差不多,有點不同就是cout

通常是傳到顯示器輸出,但可以被重定向輸出到文件,而cerr流中的信息只能在顯示器輸出.

clog流也是標准錯誤流,作用和cerr一樣,區別在於cerr不經過緩沖區,直接向顯示器輸出信息,而clog中的信息存放在緩沖區,緩沖區滿

或者遇到endl時才輸出.  

==============================================================================
以上都是我copy來的...

#4


同意樓上.
一般來說,是分不出來的(默認都在屏幕上),但是如果對標准輸入輸出設備進行重定向的時候,就分開了...

#5


這里 http://topic.csdn.net/u/20070724/16/03bc6b41-6936-4bab-a7f7-4276cf06858b.html

#6


簡單地說,可以理解成:
cerr輸出時不會緩沖也不允許重定向。
cout輸出時會有緩沖而且可以重定向。
你可以用下面的代碼試試:
#include <iostream>
using namespace std;

int main()
{
    cout << "good...";
    cerr << "luck...";
}
編譯連接后運行的時候很可能會先看到luck...,如果運行的時候帶重定向符號(比如>a.txt),會發現luck...還是會出現在屏幕上。

#7


個人感覺沒好大區別
不是看到3樓的真回答不上來

#8


重新發一下上面的代碼。

#include  <iostream> 
using namespace std; 

int main() 

    cout  << "good..."; 
    cerr  << "luck..."; 

#9


不是一個流。
你就別假設他們有聯系不就行了么。
雖然默認情況下它們都導向控制台窗口。
其實,即使它們功能上有區別,也是有辦法抹殺的。

#10


所以,最關鍵的區別不是功能上的,而是它們不是一個流。

#11


學習

#12


cerr不進行緩沖而直接輸出內容,cout首先將內容寫入緩沖區,緩沖區刷新時才將內容輸出

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com