basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() ); |
Extracts and discards characters from the input stream until and including delim
.
ignore
behaves as an UnformattedInputFunction. After constructing and checking the sentry object, it extracts characters from the stream and discards them until any one of the following conditions occurs:
count
characters were extracted. This test is disabled in the special case when count
equals std::numeric_limits<std::streamsize>::max()
setstate(eofbit)
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()
count | - | number of characters to extract |
delim | - | delimiting character to stop the extraction at. It is also extracted. |
*this
.
failure
if an error occurred (the error state flag is not goodbit
) and exceptions()
is set to throw for that state. If an internal operation throws an exception, it is caught and badbit
is set. If exceptions()
is set for badbit
, the exception is rethrown.
The following example uses ignore
to skip over non-numeric input:
#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
extracts characters (public member function) |
|
extracts characters until the given character is found (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/io/basic_istream/ignore