std::basic_istream<CharT,Traits>::ignore
提供: cppreference.com
<tbody>
</tbody>
basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() ); |
||
delim まで (delim を含む) 入力ストリームから文字を抽出して破棄します。
ignore は UnformattedInputFunction として動作します。 sentry オブジェクトの構築および確認の後、以下の条件のいずれかが発生するまで、ストリームから文字を抽出し、それらを破棄します。
count個の文字が抽出された。countがstd::numeric_limits<std::streamsize>::max()と等しい特別なケースではこの確認は無効化されます。
- 入力シーケンスでファイル終端状況が発生した。 この場合は
setstate(eofbit)を呼びます。
- 入力シーケンスの次に利用可能な文字
cがdelimである (Traits::eq_int_type(Traits::to_int_type(c), delim)によって判定されます)。 区切り文字は抽出され、破棄されます。delimがTraits::eof()の場合、この確認は無効化されます。
引数
| count | - | 抽出する文字数 |
| delim | - | 抽出を停止する区切り文字。 この文字も抽出されます |
戻り値
*this。
例外
エラーが発生し (エラー状態フラグが goodbit でなく)、その状態に対して投げるために exceptions() がセットされている場合は failure。
内部の操作が例外を投げた場合、それはキャッチされ、 badbit がセットされます。 exceptions() が badbit に対してセットされていれば、その例外が投げ直されます。
例
以下の例は数値でない入力をスキップするために ignore を使用します。
Run this code
#include <iostream>
#include <sstream>
#include <limits>
int main()
{
std::istringstream input("1\n"
"some non-numeric input\n"
"2\n");
for(;;) {
int n;
input >> n;
if (input.eof() || input.bad()) {
break;
} else if (input.fail()) {
input.clear(); // unset failbit
input.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // skip bad input
} else {
std::cout << n << '\n';
}
}
}
出力:
1
2
関連項目
| 文字を抽出します (パブリックメンバ関数) | |
| 指定された文字が見つかるまで文字を抽出します (パブリックメンバ関数) |