std::basic_filebuf<CharT,Traits>:: close
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 overflow ( EOF ) | changed to overflow ( Traits :: eof ( ) ) |
LWG 622 | C++98 |
it was unclear how to handle the
exception thrown during closing |
it is rethrown after closing the file |
See also
checks if the associated file is open
(public member function) |
|
[virtual]
|
destructs a
basic_filebuf
object and closes the file if it is open
(virtual public member function) |