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 对象并且在文件打开的情况下关闭文件
(虚公开成员函数)