public member function
<fstream>

std::filebuf::close

filebuf* close();
关闭文件
关闭当前关联的文件,解除它们之间的关联。

任何待处理的输出序列都会被写入文件(如同调用虚成员 overflow),以及任何未移位字符(codecvt::unshift),在需要时。

如果这些操作中的任何一个失败,或者当前没有文件打开,则函数失败。

参数



返回值

如果成功,该函数返回 this
如果失败(包括文件*未打开*时),则返回*空指针*。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// filebuf::close()
#include <iostream>
#include <fstream>

int main () {
  std::ifstream is;
  std::filebuf * fb = is.rdbuf();

  fb->open ("test.txt",std::ios::in);

  // appending operations

  fb->close();

  return 0;
}

数据竞争

修改 filebuf 对象。
同时访问同一个文件流缓冲区对象可能导致数据争用。

异常安全

基本保证:如果抛出异常,*文件流缓冲区*处于有效状态。
由内部操作引发的任何异常都会被该函数捕获,并在关闭文件后重新抛出。

另见