public member function
<fstream>

std::basic_filebuf::close

basic_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;
}

数据竞争

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

异常安全

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

另见