共用方式為


<iostream>

宣告對標準資料流的讀取和寫入進行控制的物件。 這通常是唯一需要從 C++ 程式進行輸入和輸出的標頭。

Syntax

#include <iostream>

注意

連結 <iostream> 庫會使用 #include <ios>#include <streambuf>#include <istream>#include <ostream> 語句。

備註

這些物件可分為兩個群組:

  • cincoutcerrclog 都是位元組導向,一次執行傳統的位元組傳輸。

  • wcinwcoutwcerrwclog 是寬方向的,會從程式在內部操作的寬字元來回轉譯。

一旦您對資料流程執行某些作業,例如標準輸入,就無法在同一個資料流程上執行不同方向的作業。 因此,例如,程式無法在 和 wcincin 交替運作。

此標頭中宣告的所有物件都會共用一個奇特屬性,您可以在包含 <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.flagsunitbuf

範例

// 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.flagsunitbuf

範例

如需使用 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 運算

另請參閱

標頭檔參考
C++ 標準程式庫中的執行緒安全
iostream 程式設計
iostreams 慣例