ストリーム >> 変数 の形で使い、入力ストリームから値を取り出す演算子。 代表例は std::cin >> x

役割

operator>> は、入力ストリームから値を抽出して、右辺の変数へ格納する。 数値なら数値として、文字列なら文字列として解釈しようとするため、書式化入力関数として振る舞う。

特徴

  • 既定で先頭の空白文字を読み飛ばす
  • 型に合わせて文字列を値へ変換する
  • 次の空白文字の手前で止まる
  • 読み残しはストリームに残る
int number {};
std::cin >> number;
 
std::string word {};
std::cin >> word;

hello world を文字列へ抽出すると、最初の hello だけが word に入り、残りはストリームに残る。

文字配列へ読むときの注意

char 配列へ直接抽出すると、入力が長すぎたときにバッファあふれを起こす危険がある。

char buf[10] {};
std::cin >> buf;

固定長バッファへ読む必要があるなら、<iomanip>std::setw で読み取る文字数を制限する。

#include <iomanip>
 
char buf[10] {};
std::cin >> std::setw(10) >> buf;

この場合、終端文字のぶん 1 文字分を残して、最大 9 文字までが読み込まれる。 残りの入力はストリームに残る。

失敗したとき

期待した型に変換できないと failbit が立ち、その後の入力も失敗する。 復旧にはストリーム状態と入力検証(C++)clear()ignore() を使う。

関連

参考