std::basic_filebuf<CharT,Traits>::close
来自 cppreference.com
< cpp | io | basic filebuf
std::basic_filebuf<CharT, Traits>* close(); |
||
如果存在 put 区域(例如,文件以写入方式打开),则首先调用 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++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
LWG 443 | C++98 | 文件使用 overflow(EOF) 写入 | 更改为 overflow(Traits::eof()) |
LWG 622 | C++98 | 不清楚如何处理 关闭期间抛出的异常 |
在关闭文件后重新抛出 |
[编辑] 另请参阅
检查关联的文件是否打开 (公共成员函数) | |
[虚拟] |
析构 basic_filebuf 对象,如果文件已打开,则关闭文件(虚拟公共成员函数) |