std::basic_istream::ignore
basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() ); |
||
Extrae y descarta caracteres del flujo de entrada hasta delim inclusive.
ignore se comporta como una FunciónDeEntradaSinFormato. Después de construir y verificar el objeto centinela, extrae caracteres del flujo y los descarta hasta que se produzca alguna de las siguientes condiciones:
- Se extrajeron
countcaracteres. Esta prueba se desactiva en el caso especial en el quecountes igual astd::numeric_limits<std::streamsize>::max().
- Se producen condiciones de fin de archivo en la secuencia de entrada, en cuyo caso la función llama a
setstate(eofbit).
- El siguiente carácter disponible
cen la secuencia de entrada esdelim, según lo determinado porTraits::eq_int_type(Traits::to_int_type(c), delim). Se extrae y se descarta el carácter delimitador. Esta prueba está deshabilitada sidelimesTraits::eof().
Parámetros
| count | - | Número de caracteres a extraer. |
| delim | - | Carácter delimitador en el que se detendrá la extracción. También se extrae. |
Valor de retorno
*this
Excepciones
failure si se produjo un error (el indicador de estado de error no es goodbit) y exceptions() está establecido para generar una excepción para ese estado.
Si una operación interna genera una excepción, se captura y se establece badbit. Si exceptions() está establecido para badbit, se vuelve a generar la excepción.
Ejemplo
El siguiente ejemplo utiliza ignore para omitir la entrada no numérica:
#include <iostream>
#include <limits>
#include <sstream>
constexpr auto max_size = std::numeric_limits<std::streamsize>::max();
int main()
{
std::istringstream input("1\n"
"alguna entrada no numérica\n"
"2\n");
for (;;)
{
int n;
input >> n;
if (input.eof() || input.bad())
break;
else if (input.fail())
{
input.clear(); // desestablece failbit
input.ignore(max_size, '\n'); // saltarse entrada incorrecta
}
else
std::cout << n << '\n';
}
}
Salida:
1
2
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 172 | C++98 | El tipo de count estaba mal especificado como int.
|
Se corrigió a std::streamsize. |
Véase también
| Extrae caracteres. (función miembro pública) | |
| Extrae caracteres hasta que se encuentra el carácter dado. (función miembro pública) |