cin.ignoreの使い方

1110 ワード

basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() );

入力ストリームからdelimに遭遇するまで文字を取り出して破棄します(破棄された文字にはdelimが含まれています)
ignoreは、次の3つのケースのいずれかが終了するまで、ストリームから文字を抽出する不正な入力関数のようなものです.
1、count文字を抽出します.countがstdに等しい場合::numeric_limits<:streamsize>::max()の場合、このような状況は起こりにくい
2、ファイル終了子に遭遇した場合setstate(eofbit)を呼び出す
3、入力シーケンスの次の文字はdelimで、Traits::eq_int_type(Traits::to_int_type(c), delim).delimiterも破棄を抽出します.delimがTraits::eof()の場合、このような状況は発生しません.
#include 
#include 
#include 

using namespace std;

int main()
{
	istringstream input("1
" "some non-numeric input
" "2
"); for (; ;) { int n; input >> n; if (input.eof() || input.bad()) { break; } else if (input.fail()) { input.clear(); input.ignore(numeric_limits::max(), '
'); } else { cout << n << '
'; } } return 0; }

出力:
1
2