public member function
<ostream> <iostream>

std::ostream::flush

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

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

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

存在一個同名且行為相同的運算子(請參閱flush)。

引數



返回值

ostream 物件 (*this)。

錯誤透過修改 *內部狀態標誌* 來發出訊號。
flagerror
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次。

資料競爭

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

異常安全

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

另見