Namespaces
Variants

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

From cppreference.net
class sentry ;

Un objeto de la clase basic_istream::sentry se construye en ámbito local al comienzo de cada función miembro de std::basic_istream que realiza entrada (tanto formateada como no formateada). Su constructor prepara el flujo de entrada: verifica si el flujo ya está en estado de fallo, vacía los flujos de salida enlazados con tie(), omite los espacios en blanco iniciales a menos que el indicador noskipws esté establecido, y realiza otras tareas definidas por la implementación si es necesario. Toda la limpieza, si es necesaria, se realiza en el destructor, garantizando que ocurra incluso si se lanzan excepciones durante la entrada.

Contenidos

Tipos de miembros

traits_type Traits

Funciones miembro

(constructor)
construye el objeto sentry. Aquí se realizan todas las tareas de preparación
(función miembro pública)
(destructor)
finaliza el objeto stream después de entrada formateada o después de una excepción, si es necesario
(función miembro pública)
operator=
[deleted]
no asignable por copia
(función miembro pública)
operator bool
verifica si la preparación del objeto stream fue exitosa
(función miembro pública)

std::basic_istream::sentry:: sentry

explicit sentry ( std:: basic_istream < CharT, Traits > & is, bool noskipws = false ) ;

Prepara el flujo para entrada formateada.

Si is. good ( ) es false , llama a is. setstate ( std:: ios_base :: failbit ) y retorna. De lo contrario, si is. tie ( ) no es un puntero nulo, llama a is. tie ( ) - > flush ( ) para sincronizar la secuencia de salida con flujos externos. Esta llamada puede suprimirse si el área de escritura de is. tie ( ) está vacía. La implementación puede diferir la llamada a flush ( ) hasta que ocurra una llamada de is. rdbuf ( ) - > underflow ( ) . Si no ocurre tal llamada antes de que el objeto sentry sea destruido, puede eliminarse por completo.

Si noskipws es cero y is. flags ( ) & std:: ios_base :: skipws es distinto de cero, la función extrae y descarta todos los caracteres de espacio en blanco hasta que el siguiente carácter disponible no sea un carácter de espacio en blanco (determinado por la configuración regional actualmente imbucida en is ). Si is. rdbuf ( ) - > sbumpc ( ) o is. rdbuf ( ) - > sgetc ( ) retorna traits :: eof ( ) , la función llama a setstate ( std:: ios_base :: failbit | std:: ios_base :: eofbit ) (lo cual puede lanzar std::ios_base::failure ).

Puede tener lugar una preparación adicional definida por la implementación, que puede llamar a setstate ( std:: ios_base :: failbit ) (lo cual puede lanzar std::ios_base::failure ).

Si después de completarse la preparación, is. good ( ) == true , entonces cualquier llamada posterior a operator bool retornará true .

Parámetros

is - flujo de entrada a preparar
noskipws - true si no se deben omitir los espacios en blanco

Excepciones

std::ios_base::failure si ocurre una condición de fin de archivo al omitir espacios en blanco.

std::basic_istream::sentry:: ~sentry

~sentry ( ) ;

No hace nada.

std::basic_istream::sentry:: operator bool

explicit operator bool ( ) const ;

Verifica si la preparación del flujo de entrada fue exitosa.

Parámetros

(ninguno)

Valor de retorno

true si la inicialización del flujo de entrada fue exitosa, false en caso contrario.

Ejemplo

#include <iostream>
#include <sstream>
struct Foo
{
    char n[5];
};
std::istream& operator>>(std::istream& is, Foo& f)
{
    std::istream::sentry s(is);
    if (s)
        is.read(f.n, 5);
    return is;
}
int main()
{
    std::string input = "   abcde";
    std::istringstream stream(input);
    Foo f;
    stream >> f;
    std::cout.write(f.n, 5);
    std::cout << '\n';
}

Salida:

abcde

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 195 C++98 no estaba claro si el constructor establecería eofbit aclarado
LWG 419 C++98 el constructor no establecía failbit si eofbit había sido establecido establece failbit en este caso

Véase también

extrae datos formateados
(función miembro pública)
extrae caracteres y arreglos de caracteres
(plantilla de función)