public member function
<fstream>

std::basic_ifstream::close

void close();
关闭文件
关闭与对象关联的文件,并将其与流解除关联。

任何待处理的输出序列都将被写入文件。

如果流当前未与任何文件关联(即,没有文件成功地通过它打开),则调用此函数会失败。

流的文件关联由其内部流缓冲区维护
内部,该函数调用rdbuf()->close(),并在失败时设置failbit

请注意,当 basic_ifstream 对象被销毁时,任何打开的文件都会被自动关闭。

返回值



如果操作失败(包括调用之前没有文件被打开),则为流设置 failbit 状态标志(如果使用成员 exceptions 注册了该状态标志,则可能会抛出 ios_base::failure)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// print the content of a text file.
#include <iostream>     // std::cout
#include <fstream>      // std::ifstream

int main () {
  std::ifstream ifs;

  ifs.open ("test.txt");

  char c = ifs.get();

  while (ifs.good()) {
    std::cout << c;
    c = ifs.get();
  }

  ifs.close();

  return 0;
}

数据竞争

修改 basic_ifstream 对象。
对同一的并发访问可能会导致数据竞争。

异常安全

基本保证:如果抛出异常,处于有效状态。
由内部操作引发的任何异常都会被该函数捕获,并在关闭文件后重新抛出。
如果函数失败(设置了 failbit 状态标志)并且为该状态设置了成员 exceptions 以抛出异常,则会抛出成员类型为 failure 的异常。

另见