命名空间
变体
操作

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_fstream 的析构函数调用)调用。

[编辑] 示例

[编辑] 缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

DR 应用于 已发布行为 正确行为
LWG 443 C++98 文件使用 overflow(EOF) 写入 更改为 overflow(Traits::eof())
LWG 622 C++98 不清楚如何处理
关闭期间抛出的异常
在关闭文件后重新抛出异常

[编辑] 参见

检查关联的文件是否已打开
(公共成员函数) [编辑]
[虚函数]
销毁 basic_filebuf 对象并在文件打开时关闭文件
(虚公共成员函数) [编辑]