Namespaces
Variants

std::basic_filebuf<CharT,Traits>:: close

From cppreference.net
std:: basic_filebuf < CharT, Traits > * close ( ) ;

Si existe un área de salida (por ejemplo, el archivo fue abierto para escritura), primero llama a overflow ( Traits :: eof ( ) ) para escribir toda la salida pendiente al archivo, incluyendo cualquier secuencia de unshift.

Si la función llamada más recientemente, entre underflow() , overflow() , seekpos() , y seekoff() , fue overflow() , entonces llama a std::codecvt::unshift() , quizás múltiples veces, para determinar la secuencia de unshift de acuerdo con la localidad imbucada, y escribe esa secuencia al archivo con overflow ( Traits :: eof ( ) ) .

Luego, cierra el archivo como si se llamara a std::fclose() , independientemente de si alguna de las llamadas anteriores tuvo éxito o falló.

Si alguna de las llamadas a funciones realizadas, incluida la llamada a std::fclose() , falla, devuelve un puntero nulo. Si alguna de las llamadas a funciones realizadas lanza una excepción, la excepción es capturada y relanzada después de cerrar el archivo. Si el archivo ya está cerrado, devuelve un puntero nulo inmediatamente.

En cualquier caso, actualiza la variable miembro privada a la que accede is_open() .

Contenidos

Parámetros

(ninguno)

Valor de retorno

this en caso de éxito, un puntero nulo en caso de fallo.

Notas

close() normalmente se llama a través del destructor de std::basic_filebuf (que, a su vez, normalmente se llama por el destructor de std::basic_fstream ).

Ejemplo

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 443 C++98 el archivo se escribió usando overflow ( EOF ) cambiado a overflow ( Traits :: eof ( ) )
LWG 622 C++98 no estaba claro cómo manejar la
excepción lanzada durante el cierre
se relanza después de cerrar el archivo

Véase también

verifica si el archivo asociado está abierto
(función miembro pública)
[virtual]
destruye un objeto basic_filebuf y cierra el archivo si está abierto
(función miembro pública virtual)