1 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
cerr與cout的主要區(qū)分就是,cout輸出的信息可以重定向,而cerr只能輸出到標(biāo)準(zhǔn)輸出(顯示器)上。 例如下面程序編譯后生成test.exe
// test.cpp
#include <iostream.h>
int main()
{
cout << "hello world---cout" << endl ;
cerr << "hello world---cerr" << endl ;
return 0;
} 在命令行模式下鍵入下面的命令: test >>cout.txt
運(yùn)行結(jié)果是:
在生成的cout.txt文件中輸出了"hello world---cout"
同時(shí)在顯示器上輸出了"hello world---cerr"
也就是說(shuō)cout的輸出可以重定向到一個(gè)文件中,而cerr必須輸出在顯示器上。
cout是標(biāo)準(zhǔn)輸出流,與cerr的區(qū)別在于cerr不經(jīng)過(guò)緩沖區(qū),直接向顯示器輸出信息,而cout中的信息存放在緩沖區(qū),緩沖區(qū)滿或者遇到endl時(shí)才輸出.
對(duì)于為什么有cerr和cout
比如,你的程序遇到調(diào)用棧用完了的威脅(無(wú)限,沒(méi)有出口的遞歸)。
你說(shuō),你到什么地方借內(nèi)存,存放你的錯(cuò)誤信息?
所以有了cerr。其目的,就是在你最需要它的緊急情況下,還能得到輸出功能的支持。
緩沖區(qū)的目的,就是減少刷屏的次數(shù)——比如,你的程序輸出圣經(jīng)中的一篇文章。不帶緩沖的話,就會(huì)每寫一個(gè)字母,就輸出一個(gè)字母,然后刷屏。有了緩沖,你將看到若干句子“同時(shí)”就出現(xiàn)在了屏幕上(由內(nèi)存翻新到顯存,然后刷新屏幕)。
- 1 回答
- 0 關(guān)注
- 774 瀏覽
添加回答
舉報(bào)