ストリーム(C++)から、書式変換をほとんど行わずにそのまま文字を読む関数。 書式化入力のような先頭空白の自動スキップや型変換を主目的としない。

多くは std::istream のメンバ関数で、std::cin.get(...)std::cin.ignore(...) のように呼び出す。 一方、getline(C++)で扱っている std::getline(std::istream&, std::string&) は自由関数であり、同名でも別物。

代表例

  • get() 1 文字を読む。空白文字もそのまま読む。
  • get(char*, n) 指定長の文字配列へ読み込む。区切り文字は残す。
  • getline(char*, n) 指定長の文字配列へ読み込み、区切り文字は捨てる。
  • ignore() 入力を読み捨てる。
  • peek() 次の 1 文字を取り出さずに確認する。
  • unget() 直前に読んだ 1 文字をストリームへ戻す。
  • putback(ch) 指定した 1 文字をストリームへ戻す。

書式化入力との違い

抽出演算子 >> は書式化入力として、既定で先頭空白を飛ばし、型変換も行う。 一方、非書式化入力関数は入力をより生の形で扱えるため、空白や改行を区別したいときに向く。

char ch {};
while (std::cin.get(ch))
    std::cout << ch;

この形なら、スペースや改行も含めてそのまま読める。

関連

参考