Namespaces
Variants

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

From cppreference.net
basic_istream & ignore ( std:: streamsize count = 1 , int_type delim = Traits :: eof ( ) ) ;

Extrae y descarta caracteres del flujo de entrada hasta e incluyendo delim .

ignore se comporta como una UnformattedInputFunction . Después de construir y verificar el objeto sentry, extrae caracteres del flujo y los descarta hasta que ocurra cualquiera de las siguientes condiciones:

  • se produce una condición de fin de archivo en la secuencia de entrada, en cuyo caso la función llama a setstate ( eofbit ) .
  • el siguiente carácter disponible c en la secuencia de entrada es delim , determinado por Traits :: eq_int_type ( Traits :: to_int_type ( c ) , delim ) . El carácter delimitador se extrae y descarta. Esta prueba está deshabilitada si delim es Traits :: eof ( ) .

Contenidos

Parámetros

count - número de caracteres a extraer
delim - carácter delimitador para detener la extracción. También se extrae

Valor de retorno

* this

Excepciones

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

Si una operación interna lanza una excepción, es capturada y se establece badbit . Si exceptions() está configurado para badbit , la excepción es relanzada.

Ejemplo

El siguiente ejemplo utiliza ignore para omitir entradas no numéricas:

#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';
    }
}

Salida:

1
2

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 172 C++98 el tipo de count estaba mal especificado como int corregido a std::streamsize

Véase también

extrae caracteres
(función miembro pública)
extrae caracteres hasta encontrar el carácter especificado
(función miembro pública)