C++ 中cerr和cout的區別實例詳解

分類:IT技術 時間:2017-09-24

C++ 中cerr和cout的區別實例詳解

前言:

 cerrThe object controls unbuffered insertions to the standard error output as a byte stream. Once the object is nstructed, the expression cerr.flags & unitbuf is nonzero.

  Example

 // iostream_cerr.cpp
// compile with: /EHsc
// By default, cerr and clog are the same as cout
#include <iostream>
#include <fstream>
 
using namespace std;
 
void TestWide( ) 
{
 int i = 0;
 wcout << L"Enter a number: ";
 wcin >> i;
 wcerr << L"test for wcerr" << endl;
 wclog << L"test for wclog" << endl; 
}
 
int main( ) 
{
 int i = 0;
 cout << "Enter a number: ";
 cin >> i;
 cerr << "test for cerr" << endl;
 clog << "test for clog" << endl;
 TestWide( );
}
 
 
 Input 
 Sample Output 
Enter a number: 3
test for cerr
test for clog
Enter a number: 1
test for wcerr
test for wclogcout
 
The object controls insertions to the standard output as a byte stream.
 
cerr 
extern ostream cerr; 
The object controls unbuffered insertions to the standard error output as a byte stream. Once the object is constructed, the expression cerr.flags() & unitbuf is nonzero. 
 
cout 
extern ostream cout; 
The object controls insertions to the standard output as a byte stream.
 

cerr: 錯誤輸出流,無緩沖,不可以重定向。輸出的數據不經過緩沖區,直接放到指定的目標中,既然不經過緩沖區那麽其它程序就無法把要輸出的內容送到其他目標中,所以說它不能被重定向。 

cout:標準輸出流,有緩沖,可重定向。把要輸出的數據先放到緩沖區中,然後再從緩沖區到你指定的設備中。當向cout流插入一個endl,不論緩沖區是否漫了,都立即輸出流中所有數據,然後插入一個換行符. 

註:linux下可以用標準錯誤輸出間接重定向cerr的輸出

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


Tags: quot lt cerr test object the

文章來源:


ads
ads

相關文章
ads

相關文章

ad