Scroll to navigation

std::basic_filebuf::close(3) C++ Standard Libary std::basic_filebuf::close(3)

NAME

std::basic_filebuf::close - std::basic_filebuf::close

Synopsis


std::basic_filebuf<CharT, Traits>* close();


If a put area exist (e.g. file was opened for writing), first calls
overflow(Traits::eof()) to write all pending output to the file, including any
unshift sequences.


If the most recently called function, out of underflow(), overflow(), seekpos(), and
seekoff(), was overflow(), then calls std::codecvt::unshift(), perhaps multiple
times, to determine the unshift sequence according to the imbued locale, and writes
that sequence to file with overflow(Traits::eof()).


Then, closes the file as if by calling std::fclose(), regardless of whether any of
the preceding calls succeeded or failed.


If any of the function calls made, including the call to std::fclose(), fails,
returns a null pointer. If any of the function calls made throws an exception, the
exception is caught and rethrown after closing the file. If the file is already
closed, returns a null pointer right away.


In any case, updates the private member variable that is accessed by is_open().

Parameters


(none)

Return value


this on success, a null pointer on failure.

Notes


close() is typically called through the destructor of std::basic_filebuf (which, in
turn, is typically called by the destructor of std::basic_fstream.

Example


This section is incomplete
Reason: no example


Defect reports


The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
LWG 443 C++98 the file was written using changed to overflow(Traits::eof())
overflow(EOF)
it was unclear how to handle
LWG 622 C++98 the it is rethrown after closing the
exception thrown during file
closing

See also


is_open checks if the associated file is open
(public member function)
destructor destructs a basic_filebuf object and closes the file if it is open
[virtual] (virtual public member function)

Category:


* Todo no example

2024.06.10 http://cppreference.com