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

From cppreference.com
< cpp‎ | io‎ | basic filebuf

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

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

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_filebuf/close&oldid=148743"