<iostream>

標準ストリームに対する読み取りと書き込みを制御するオブジェクトを宣言します。 これは、多くの場合、C++ プログラムから入力と出力を実行するために必要な唯一のヘッダーです。

構文

#include <iostream>

Note

<iostream> ライブラリでは、#include <ios>#include <streambuf>#include <istream>#include <ostream> のステートメントを使用します。

解説

このオブジェクトは、次の 2 つのグループに分類されます。

  • cincoutcerrclog はバイト指向で、従来のバイト単位の転送を実行します。

  • wcinwcoutwcerr、と wclog はワイド指向で、プログラムが内部で操作するワイド文字に翻訳するか、ワイド文字から翻訳します。

標準入力など、ストリームで特定の操作を実行すると、同じストリームで別の指向の操作を実行できません。 そのため、cinwcin など、両者に対するプログラムの操作に互換性はありません。

このヘッダーで宣言されたすべてのオブジェクトは、特有のプロパティを共有します。<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 は 0 以外で、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 は 0 以外になります。 詳細については、 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 の基本操作」をご覧ください。

関連項目

ヘッダー ファイル リファレンス
C++ 標準ライブラリ内のスレッド セーフ
iostream プログラミング
iostreams の規則