名前空間
変種
操作

std::basic_istream::ignore

提供: cppreference.com
< cpp‎ | io‎ | basic istream
 
 
 
 
basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() );

delim まで (delim を含む) 入力ストリームから文字を抽出して破棄します。

ignoreUnformattedInputFunction として動作します。 sentry オブジェクトの構築および確認の後、以下の条件のいずれかが発生するまで、ストリームから文字を抽出し、それらを破棄します。

  • count 個の文字が抽出された。 countstd::numeric_limits<std::streamsize>::max() と等しい特別なケースではこの確認は無効化されます。
  • 入力シーケンスでファイル終端状況が発生した。 この場合は setstate(eofbit) を呼びます。
  • 入力シーケンスの次に利用可能な文字 cdelim である (Traits::eq_int_type(Traits::to_int_type(c), delim) によって判定されます)。 区切り文字は抽出され、破棄されます。 delimTraits::eof() の場合、この確認は無効化されます。

目次

[編集] 引数

count - 抽出する文字数
delim - 抽出を停止する区切り文字。 この文字も抽出されます

[編集] 戻り値

*this

[編集] 例外

エラーが発生し (エラー状態フラグが goodbit でなく)、その状態に対して投げるために exceptions() がセットされている場合は failure

内部の操作が例外を投げた場合、それはキャッチされ、 badbit がセットされます。 exceptions()badbit に対してセットされていれば、その例外が投げ直されます。

[編集]

以下の例は数値でない入力をスキップするために ignore を使用します。

#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

[編集] 関連項目

文字を抽出します
(パブリックメンバ関数) [edit]
指定された文字が見つかるまで文字を抽出します
(パブリックメンバ関数) [edit]