函式
<ostream> <iostream>

std::endl

用於 ostream
ostream& endl (ostream& os);
基礎模板
template <class charT, class traits>basic_ostream<charT,traits>& endl (basic_ostream<charT,traits>& os);
插入換行符並重新整理流
插入一個換行符並重新整理流。

其行為等同於呼叫 os.put('\n')(對於 char 型別以外的其他字元型別,則為 os.put(os.widen('\n'))),然後呼叫 os.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
// endl example
#include <iostream>     // std::cout, std::end

int main () {

  int a=100;
  double b=3.14;

  std::cout << a;
  std::cout << std::endl;              // manipulator inserted alone
  std::cout << b << std::endl << a*b;  // manipulator in concatenated insertion
  std::endl (std::cout);               // endl called as a regular function

  return 0;
}

輸出

100
3.14
314


資料競爭

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

異常安全

基本保證:如果丟擲異常,os 處於有效狀態。
如果 os 的結果錯誤狀態標誌不是 goodbit 並且 exceptions 成員被設定為針對該狀態丟擲,則此函式將丟擲成員型別為 failure 的異常。
內部操作丟擲的任何異常都會被此函式捕獲並處理,從而設定 osbadbit。如果在對 osexceptions 的最後一次呼叫時設定了 badbit,則此函式將重新丟擲捕獲到的異常。

另見