public 成員函式
<ostream> <iostream>

std::ostream::put

ostream& put (char c);
放置字元
將字元 c 插入流。

內部,該函式透過首先構造一個 sentry 物件來訪問輸出序列。然後(如果 good),它將 c 插入到其關聯的 *流緩衝區* 物件中,如同呼叫其成員函式 sputc 一樣,最後銷燬 sentry 物件,然後返回。

引數

c
要寫入的字元。

返回值

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
// typewriter
#include <iostream>     // std::cin, std::cout
#include <fstream>      // std::ofstream

int main () {
  std::ofstream outfile ("test.txt");
  char ch;

  std::cout << "Type some text (type a dot to finish):\n";
  do {
    ch = std::cin.get();
    outfile.put(ch);
  } while (ch!='.');

  return 0;
}

此示例將使用者輸入直到鍵入句點(.)的所有內容寫入檔案。

資料競爭

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

異常安全

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

另見