Namespaces
Variants
Views
Actions

std::basic_istream::ignore

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

Extracts and discards characters from the input stream until and including delim.

First, constructs a std::basic_istream::sentry object with noskipws set to true. Afterwards, if good()==false, calls setstate(failbit) and returns. Otherwise, extracts characters from the stream and discards them until any one of the following conditions occurs:

  • end of file conditions occurs in the input sequence (in which case the function calls setstate(eofbit)
  • the next available character c in the input sequence is delim as determined by Traits::eq_int_type(Traits::to_int_type(c), delim). The delimiter character is extracted and discarded (this test is disabled if delim is Traits::eof())

Contents

[edit] Parameters

count - number of characters to extract
delim - delimiting character to stop the extraction at. It is also extracted.

[edit] Return value

*this

[edit] Example

#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';
    }
}

Output:

1
2

[edit] See also

extracts characters
(public member function) [edit]
extracts characters until the given character is found
(public member function) [edit]