std::basic_filebuf<CharT,Traits>::close
来自cppreference.com
< cpp | io | basic filebuf
std::basic_filebuf<CharT, Traits>* close(); |
||
如果放置区存在(即文件为写入打开),那么会首先调用 overflow(Traits::eof()) 写入所有未决输出到文件,包含任何反迁移序列。
如果在 underflow()
、overflow()
、seekpos()
和 seekoff()
之中最近调用的函数是 overflow()
,那么可能会多次调用 std::codecvt::unshift() 以确定按照浸染的本地环境的反迁移序列,并将该序列以 overflow(Traits::eof()) 写入文件。
然后,如同用 std::fclose() 关闭文件,不考虑任何之前调用成功或失败。
如果作出的任何函数调用包含对 std::fclose() 的调用失败,那么就会返回空指针。如果作出的任何函数调用抛出异常,那么捕捉该异常并在调用关闭文件后重抛。如果该文件已关闭,那么立即返回空指针。
任何情况下,都更新 is_open() 所访问的私有成员变量。
参数
(无)
返回值
成功时返回 this,失败时返回空指针。
注意
close()
典型地通过 std::basic_filebuf 的析构函数调用(继而典型地为 std::basic_fstream 的析构函数所调用)。
示例
本节未完成 原因:暂无示例 |
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 443 | C++98 | 文件通过 overflow(EOF) 写入 | 改成 overflow(Traits::eof()) |
LWG 622 | C++98 | 不明确如何处理关闭过程中抛出的异常 | 在关闭文件后重抛 |
参阅
检查关联文件是否打开 (公开成员函数) | |
[虚] |
析构 basic_filebuf 对象并且在文件打开的情况下关闭文件 (虚公开成员函数) |