<iostream>
宣告對標準資料流的讀取和寫入進行控制的物件。 這通常是唯一需要從C++程式進行輸入和輸出的標頭。
Syntax
#include <iostream>
注意
連結<iostream>
庫會使用#include <ios>
、 #include <streambuf>
#include <istream>
和 #include <ostream>
語句。
備註
這些物件可分為兩個群組:
一旦您對數據流執行某些作業,例如標準輸入,就無法在同一個數據流上執行不同方向的作業。 因此,例如,程式無法在和wcin
上cin
交替運作。
此標頭中宣告的所有物件都會共用一個奇特屬性,您可以在包含 <iostream>
的翻譯單元中,假設這些物件是在定義的任何靜態物件之前建構的。 同樣地,您可以假設這些物件不會在您定義之任何這類靜態物件的解構函式之前終結。 (不過,輸出數據流會在程序終止期間排清。因此,您可以在程式啟動和程式終止之後安全地讀取或寫入標準數據流。
不過,這項保證並不普遍。 靜態建構函式可能會在另一個轉譯單位中呼叫函式。 由於轉譯單位參與靜態建構的不確定順序,所呼叫的函式無法假設在此標頭中宣告的物件已建構。 若要在這類內容中使用這些物件,您必須先建構 類別 ios_base::Init
的物件。
全域資料流物件
名稱 | 描述 |
---|---|
cerr |
指定 cerr 全域資料流。 |
cin |
指定 cin 全域資料流。 |
clog |
指定 clog 全域資料流。 |
cout |
指定 cout 全域資料流。 |
wcerr |
指定 wcerr 全域資料流。 |
wcin |
指定 wcin 全域資料流。 |
wclog |
指定 wclog 全域資料流。 |
wcout |
指定 wcout 全域資料流。 |
cerr
物件cerr
會控制與 中宣告<cstdio>
之 對象stderr
相關聯的數據流緩衝區輸出。
extern ostream cerr;
傳回值
ostream
物件。
備註
此物件可控制以位元組資料流形式對標準錯誤輸出進行的未緩衝插入。 建構物件之後,表示式 cerr.flags & unitbuf
為非零,且 cerr.tie() == &cout
為 。 如需詳細資訊,請參閱 cerr.flags
和 unitbuf
。
範例
// iostream_cerr.cpp
// compile with: /EHsc
#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( );
}
cin
指定 cin
全域資料流。
extern istream cin;
傳回值
istream
物件。
備註
此物件可控制以位元組資料流形式從標準輸出進行的擷取。 建構 物件之後,呼叫 cin.tie
會傳 &cout
回 。
範例
在此範例中,當數據流跨越非數值字元時, cin
設定數據流上的失敗位。 程式會清除失敗位,並將無效字元從數據流中移除以繼續。
// iostream_cin.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
int x;
cout << "enter choice:";
cin >> x;
while (x < 1 || x > 4)
{
cout << "Invalid choice, try again:";
cin >> x;
// not a numeric character, probably
// clear the failure and pull off the non-numeric character
if (cin.fail())
{
cin.clear();
char c;
cin >> c;
}
}
}
2
clog
指定 clog
全域資料流。
extern ostream clog;
傳回值
ostream
物件。
備註
此物件可控制以位元組資料流形式對標準錯誤輸出進行的已緩衝插入。
範例
如需使用 clog
的範例,請參閱 cerr
。
cout
指定 cout
全域資料流。
extern ostream cout;
傳回值
ostream
物件。
備註
此物件可以位元組資料流形式對標準輸出進行的插入。
範例
如需使用 cout
的範例,請參閱 cerr
。
wcerr
指定 wcerr
全域資料流。
extern wostream wcerr;
傳回值
wostream
物件。
備註
此物件可控制以寬資料流形式對標準錯誤輸出進行的未緩衝插入。 建構 物件之後,表達式 wcerr.flags & unitbuf
為非零。 如需詳細資訊,請參閱 wcerr.flags
和 unitbuf
。
範例
如需使用 wcerr
的範例,請參閱 cerr
。
wcin
指定 wcin
全域資料流。
extern wistream wcin;
傳回值
wistream
物件。
備註
此物件可控制以寬資料流形式從標準輸出進行的擷取。 建構 物件之後,呼叫 wcin.tie
會傳 &wcout
回 。
範例
如需使用 wcin
的範例,請參閱 cerr
。
wclog
指定 wclog
全域資料流。
extern wostream wclog;
傳回值
wostream
物件。
備註
此物件可控制以寬資料流形式對標準錯誤輸出進行的已緩衝插入。
範例
如需使用 wclog
的範例,請參閱 cerr
。
wcout
指定 wcout
全域資料流。
extern wostream wcout;
傳回值
wostream
物件。
備註
此物件能控制插入標準輸出做為寬資料流的作業。
範例
如需使用 wcout
的範例,請參閱 cerr
。
wcout
陳述式中的 CString
執行個體必須轉換成 const wchar_t*
,如下列範例所示。
CString cs("meow");
wcout <<(const wchar_t*) cs <<endl;
如需詳細資訊,請參閱基本 CString 運算。