ストリーム >> 変数 の形で使い、入力ストリームから値を取り出す演算子。
代表例は 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() を使う。