public member function
<ostream> <iostream>

std::basic_ostream::flush

basic_ostream& flush();
重新整理輸出流緩衝區
使關聯的*流緩衝區*與其控制的輸出序列同步。

對於實現中間緩衝區的*流緩衝區*物件,此函式會請求將所有字元寫入受控序列。

內部,該函式透過首先構造一個sentry物件來訪問輸出序列。然後(如果*good*),它在其關聯的*流緩衝區*物件上呼叫*pubsync*,最後在返回前銷燬*sentry*物件。

存在一個同名同行為的運算子(參見flush)。

引數



返回值

basic_ostream 物件(*this)。

錯誤透過修改*內部狀態標誌*來報告
標誌錯誤
eofbit-
failbit如果 sentry 的構造失敗,則可能設定此標誌。
badbit同步操作失敗(包括函式捕獲了內部操作丟擲的異常)。
當設定時,流的完整性可能已受到影響。
一次操作可能設定多個標誌。

如果操作設定了一個已註冊到成員exceptions的*內部狀態標誌*,則函式將丟擲一個成員型別為failure的異常。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Flushing files
#include <fstream>      // std::ofstream

int main () {

  std::ofstream outfile ("test.txt");

  for (int n=0; n<100; ++n)
  {
    outfile << n;
    outfile.flush();
  }
  outfile.close();

  return 0;
}

此示例嘗試更新檔案test.txt的內容100次。

資料競爭

修改流物件。
同時訪問同一個流物件可能會導致資料競爭,但標準流物件(coutcerrclogwcoutwcerrwclog)在*與stdio同步*時除外(在這種情況下,不會發生資料競爭,儘管不保證來自多個執行緒的字元插入順序)。

異常安全

基本保證:如果丟擲異常,物件處於有效狀態。
如果最終的*錯誤狀態標誌*不是goodbit且已設定成員exceptions以針對該狀態丟擲,則此函式將丟擲成員型別為failure的異常。
任何由內部操作丟擲的異常都會被函式捕獲並處理,設定badbit。如果上次呼叫exceptions時設定了badbit,則函式將重新丟擲捕獲的異常。

另見