函式
<ostream> <iostream>

std::flush

用於 ostream
ostream& flush (ostream& os);
基礎模板
template <class charT, class traits>basic_ostream<charT,traits>& flush (basic_ostream<charT,traits>& os);
重新整理流緩衝區
同步關聯的流緩衝區與其控制的輸出序列。

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

其行為等同於呼叫os的成員函式flush

存在同名且行為相同的成員函式(參見ostream::flush)。

引數

os
受影響的輸出流物件。
由於此函式是操縱符,因此它設計為單獨使用,不帶引數,並與輸出流的插入<<)操作結合使用(請參見下面的示例)。

返回值

引數 os

透過修改 os內部狀態標誌來發出錯誤訊號。
flagerror
eofbit-
failbit如果 sentry 物件的構造失敗,則可能設定此標誌。
badbit同步操作失敗(包括函式捕獲了內部操作丟擲的異常)。
設定時,流的完整性可能受到影響。
單個操作可能在 os 上設定多個標誌。

如果操作設定了os內部狀態標誌,而該標誌已透過其成員exceptions註冊,則該函式將引發型別為ios_base::failure的異常。

示例

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

int main () {

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

  for (int n=0; n<100; n++)
    outfile << n << std::flush;

  outfile.close();

  return 0;
}

此程式請求重新整理test.txt 100 次。

資料競爭

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

異常安全

基本保證:如果丟擲異常,os 處於有效狀態。
如果os的最終錯誤狀態標誌不是goodbitexceptions成員已設定為針對該狀態進行丟擲,則會引發型別為failure的異常。
內部操作引發的任何異常都會被函式捕獲並處理,從而設定osbadbit。如果對os呼叫exceptionsbadbit已被設定,則函式將重新丟擲捕獲到的異常。

另見