Namespaces
Variants

std::basic_istream<CharT,Traits>:: ignore

From cppreference.net
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:

  • 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

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

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)