std::basic_istream<CharT,Traits>:: ignore
|
basic_istream
&
ignore
(
std::
streamsize
count
=
1
, int_type delim
=
Traits
::
eof
(
)
)
;
|
||
Extrahiert und verwirft Zeichen aus dem Eingabestrom bis einschließlich delim .
ignore
verhält sich wie eine
UnformattedInputFunction
. Nach dem Konstruieren und Prüfen des Sentry-Objekts extrahiert es Zeichen aus dem Stream und verwirft sie, bis eine der folgenden Bedingungen eintritt:
- count Zeichen wurden extrahiert. Dieser Test ist im speziellen Fall deaktiviert, wenn count gleich std:: numeric_limits < std:: streamsize > :: max ( ) ist.
- End-of-File-Bedingungen treten in der Eingabesequenz auf, in welchem Fall die Funktion setstate ( eofbit ) aufruft.
- das nächste verfügbare Zeichen c in der Eingabesequenz ist delim , wie bestimmt durch Traits :: eq_int_type ( Traits :: to_int_type ( c ) , delim ) . Das Trennzeichen wird extrahiert und verworfen. Dieser Test ist deaktiviert, wenn delim gleich Traits :: eof ( ) ist.
Inhaltsverzeichnis |
Parameter
| count | - | Anzahl der zu extrahierenden Zeichen |
| delim | - | Begrenzungszeichen, bei dem die Extraktion gestoppt wird. Es wird ebenfalls extrahiert |
Rückgabewert
* this
Ausnahmen
Wenn eine interne Operation eine Ausnahme auslöst, wird diese abgefangen und
badbit
wird gesetzt. Wenn
exceptions()
für
badbit
gesetzt ist, wird die Ausnahme erneut ausgelöst.
Beispiel
Das folgende Beispiel verwendet
ignore
um nicht-numerische Eingabe zu überspringen:
#include <iostream> #include <limits> #include <sstream> constexpr auto max_size = std::numeric_limits<std::streamsize>::max(); 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(max_size, '\n'); // skip bad input } else std::cout << n << '\n'; } }
Ausgabe:
1 2
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 172 | C++98 | der Typ von count war falsch spezifiziert als int | korrigiert zu std::streamsize |
Siehe auch
|
extrahiert Zeichen
(öffentliche Elementfunktion) |
|
|
extrahiert Zeichen bis zum angegebenen Zeichen
(öffentliche Elementfunktion) |