最終更新日時:
が更新

履歴 編集

function
<istream>

std::basic_istream::ignore

basic_istream<CharT, Traits>& ignore(streamsize n = 1, int_type delim = Traits::eof());

概要

(非書式化入力関数)ストリームから文字を入力して捨てる。 入力ストリームから文字を入力する(読み取り位置を進める)が、それをプログラム上で利用しない場合にこの関数を使用できる。

入力して捨てる文字の数は、2通りの方法で指定できる。

  • 文字数の上限を1番目の仮引数nで指定する。この指定が不要なら、numeric_limits<streamsize>::max()を実引数に与える。
  • 2番目の仮引数delimを与えると、その文字が現れるまで入力して捨てる処理を実行する。この指定が不要なら、Traits::eof()を実引数に与える。

効果

  1. sentryオブジェクトを構築する。sentryオブジェクトが失敗を示した場合、何もしない。
  2. 以下のいずれかを満たすまで、this内のストリームバッファから文字を入力する(どこへも出力することなく捨てる)。
    • 実引数で指定されたn文字まで入力した。
      • n == numeric_limits<streamsize>::max()の場合、この条件は適用されない。
    • EOFに達した。この場合、setstate(eofbit)を呼び出す。
    • 次に入力する文字がdelimである。
      • 次の文字をcとして、Traits::eq_int_type(Traits::to_int_type(c), delim)が真の場合。
      • delimTraits::eof()である場合、この条件は適用されない。

戻り値

*this

#include <iostream>
#include <limits>

int main() {
  // Cが入力されるまで捨てる。
  std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'C');

  int x;
  // 好きな数値を入力してください
  if (std::cin >> x) {
    std::cout << x << "が入力されました。" << std::endl;
  }
}

入力

ABC200

出力

200が入力されました。

実装例

TBD

バージョン

言語

  • C++98

参照