名前空間
変種
操作

std::cout, std::wcout

提供: cppreference.com
< cpp‎ | io
 
 
 
 
ヘッダ <iostream> で定義
extern std::ostream cout;
(1)
extern std::wostream wcout;
(2)

グローバルオブジェクト std::cout および std::wcout は標準 C 出力ストリーム stdout に紐付けられている処理系定義の (std::streambuf から派生した) 型のストリームバッファへの出力を制御します。

これらのオブジェクトは std::ios_base::Init 型のオブジェクトが最初に構築されるときまたはそれより前に初期化されることが保証されており、順序付き初期化を行う静的オブジェクトのコンストラクタおよびデストラクタ内で使用することができます (そのオブジェクトが定義されるより前に <iostream> がインクルードされている限り)。

sync_with_stdio(false) が行われていなければ、書式付き出力と書式なし出力のどちらについても、これらのオブジェクトに複数のスレッドから並行的にアクセスしても安全です。

いったん初期化されると、 std::coutstd::cintie() され、 std::wcoutstd::wcintie() されます。 これは、 std::cin に対するあらゆる入力操作が (std::basic_istream::sentry のコンストラクタを通して) std::cout.flush() を実行することを意味します。

いったん初期化されると、 std::coutstd::cerr にも tie() され、 std::wcoutstd::wcerr にも tie() されます。 これは、 std::cerr に対するあらゆる出力操作が (std::basic_istream::sentry のコンストラクタを通して) std::cout.flush() を実行することを意味します。

(C++11およびそれ以降)

[編集] ノート

名前の中の「c」は「character」を表します (stroustrup.com FAQ)。 cout は「character output」、 wcout は「wide character output」という意味です。

[編集]

#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のパブリックメンバクラス) [edit]
標準 C エラーストリーム stderr に書き込みます。 バッファリングされません
(グローバルオブジェクト) [edit]
標準 C エラーストリーム stderr に書き込みます
(グローバルオブジェクト) [edit]