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