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 物件。
同時訪問同一個檔案流緩衝區物件可能導致資料爭用。

異常安全

基本保證:如果丟擲異常,*檔案流緩衝區*處於有效狀態。
由內部操作引發的任何異常都會被該函式捕獲,並在關閉檔案後重新丟擲。

另見