std:: cout, std:: wcout
|
定義済みヘッダー
<iostream>
|
||
|
extern
std::
ostream
cout
;
|
(1) | |
|
extern
std::
wostream
wcout
;
|
(2) | |
グローバルオブジェクト
std::cout
および
std::wcout
は、実装定義の型(
std::streambuf
から派生)のストリームバッファへの出力を制御し、標準C出力ストリーム
stdout
に関連付けられています。
これらのオブジェクトは、型 std::ios_base::Init のオブジェクトが構築される最初の時点で初期化されることが保証されており、 順序付けられた初期化 を持つ静的オブジェクトのコンストラクタおよびデストラクタ内で使用可能です (オブジェクトが定義される前に <iostream> がインクルードされている限り)。
std :: ios_base :: sync_with_stdio ( false ) が発行されていない限り、これらのオブジェクトに対して書式付きおよび書式なし出力の両方について、複数のスレッドから同時にアクセスしても安全です。
std::cin
の仕様により、
std::
cin
.
tie
(
)
は
&
std
::
cout
を返します。これは、
std::cin
に対するあらゆる入力操作が
std
::
cout
.
flush
(
)
を実行することを意味します(
std::basic_istream::sentry
のコンストラクタ経由)。同様に、
std::
wcin
.
tie
(
)
は
&
std
::
wcout
を返します。
std::cerr
の仕様により、
std::
cerr
.
tie
(
)
は
&
std
::
cout
を返します。これは、
std::cerr
に対する出力操作が
std
::
cout
.
flush
(
)
を実行することを意味します(
std::basic_ostream::sentry
のコンストラクタ経由)。同様に、
std::
wcerr
.
tie
(
)
は
&
std
::
wcout
を返します。
(C++11以降)
注記
名前の「c」は「文字(character)」を指します(
stroustrup.com FAQ
);
cout
は「文字出力(character output)」を意味し、
wcout
は「ワイド文字出力(wide character output)」を意味します。
テンプレート化された変数の
動的初期化
は順序付けられていないため、
std::ios_base::Init
型のオブジェクトが構築されていない限り、そのような変数の初期化が開始される前に
std::cout
が使用可能な状態に初期化されていることは保証されません。
例
#include <iostream> struct Foo { int n; Foo() { std::cout << "static constructor\n"; } ~Foo() { std::cout << "static destructor\n"; } }; Foo f; // static object int main() { std::cout << "main function\n"; }
出力:
static constructor main function static destructor
関連項目
|
標準ストリームオブジェクトを初期化する
(
std::ios_base
の公開メンバクラス)
|
|
|
標準Cエラーストリーム
stderr
への書き込み、バッファリングなし
(グローバルオブジェクト) |
|
|
標準Cエラーストリーム
stderr
への書き込み
(グローバルオブジェクト) |
|
|
入力ストリームに関連付けられた
FILE
*
型の式
出力ストリームに関連付けられた FILE * 型の式 エラー出力ストリームに関連付けられた FILE * 型の式 (マクロ定数) |