std::basic_filebuf<CharT,Traits>::close
来自 cppreference.cn
< 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_filebuf 的析构函数又通常由 std::basic_fstream 的析构函数调用)。
[编辑] 示例
本节不完整 原因:无示例 |
[编辑] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 443 | C++98 | 文件使用 overflow(EOF) 写入 | 更改为 overflow(Traits::eof()) |
LWG 622 | C++98 | 不清楚如何处理 关闭期间抛出的异常 |
在关闭文件后重新抛出 |
[编辑] 参阅
检查关联文件是否打开 (public member function) | |
[virtual] |
销毁一个 basic_filebuf 对象,如果文件已打开则关闭它(virtual public member function) |