std::basic_istream<CharT,Traits>::ignore
Von cppreference.com
< cpp | io | basic istream
| 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 Strom und verwirft sie, bis eine der folgenden Bedingungen eintritt
- count Zeichen wurden extrahiert. Dieser Test ist im Sonderfall deaktiviert, wenn count gleich std::numeric_limits<std::streamsize>::max() ist.
- Die End-of-File-Bedingung tritt in der Eingabesequenz auf, in diesem Fall ruft die Funktion setstate(eofbit) auf.
- 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.
Inhalt |
[bearbeiten] Parameter
| zählt | - | Anzahl der zu extrahierenden Zeichen |
| delim | - | Trennzeichen, an dem die Extraktion gestoppt wird. Es wird ebenfalls extrahiert |
[bearbeiten] Rückgabewert
*this
[bearbeiten] Ausnahmen
Wenn eine interne Operation eine Ausnahme auslöst, wird diese abgefangen und badbit gesetzt. Wenn exceptions() für badbit gesetzt ist, wird die Ausnahme erneut ausgelöst.
[bearbeiten] Beispiel
Das folgende Beispiel verwendet ignore, um nicht-numerische Eingaben zu überspringen
Führen Sie diesen Code aus
#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
[bearbeiten] 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 wurde fälschlicherweise als int spezifiziert | korrigiert zu std::streamsize |
[bearbeiten] Siehe auch
| extrahiert Zeichen (public member function) | |
| extrahiert Zeichen, bis das gegebene Zeichen gefunden wird (public member function) |