Namespaces
Variants

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

From cppreference.net
std:: basic_filebuf < CharT, Traits > * close ( ) ;

如果存在放置区域(例如文件以写入模式打开),首先调用 overflow ( Traits :: eof ( ) ) 将所有待处理输出(包括任何unshift序列)写入文件。

若最近调用的函数(在 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 未明确说明如何处理
关闭期间抛出的异常
在关闭文件后重新抛出该异常

参见

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