名前空間
変種
操作

std::cin, std::wcin

提供: cppreference.com
< cpp‎ | io
 
 
 
 
ヘッダ <iostream> で定義
extern std::istream cin;
(1)
extern std::wistream wcin;
(2)

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

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

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

いったん std::cin が構築されると、 std::cin.tie()&std::cout を返し、同様に std::wcin.tie()&std::wcout を返します。 これは、 std::cin に対するあらゆる書式付き入力操作が std::cout.flush() の呼び出しを強制する (出力保留中の文字があれば) ことを意味します。

[編集] ノート

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

[編集]

#include <iostream>
struct Foo {
    int n;
    Foo() {
       std::cout << "Enter n: "; // no flush needed
       std::cin >> n;
    }
};
Foo f; // static object
int main()
{
    std::cout << "f.n is " << f.n << '\n';
}

出力:

Enter n: 10
f.n is 10

[編集] 関連項目

標準ストリームオブジェクトを初期化します
(std::ios_baseのパブリックメンバクラス) [edit]
標準 C 出力ストリーム stdout に書き込みます
(グローバルオブジェクト) [edit]