public member function
<ostream> <iostream>

std::basic_ostream::put

basic_ostream& put (char_type c);
放置字元
將字元 c 插入流。

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

引數

c
要寫入的字元。
成員型別 char_type 是流使用的字元型別(即其第一個類模板引數 charT)。

返回值

basic_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;
}

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

資料競爭

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

異常安全

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

另見