Namensräume
Varianten
Aktionen

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

  • 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

failure, wenn ein Fehler aufgetreten ist (der Fehlerstatus-Flag ist nicht goodbit) und exceptions() für diesen Zustand zum Werfen gesetzt ist.

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

#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) [bearbeiten]
extrahiert Zeichen, bis das gegebene Zeichen gefunden wird
(public member function) [bearbeiten]