名稱空間
變體
操作

C++ 命名需求: UnformattedOutputFunction

來自 cppreference.com
 
 
C++ 命名要求
基本
型別屬性
全庫範圍




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
UnformattedOutputFunction(非格式化輸出函式)
格式化器
(C++20)
隨機數
併發
(C++11)
Ranges
多維檢視
其他

 

[編輯] 要求

UnformattedOutputFunction 是一個流輸出函式,它執行以下操作:

1) 構造一個具有自動儲存期的 basic_ostream::sentry 型別的物件,該物件執行以下操作:
  • 如果輸出流上設定了 eofbitbadbit,則也設定 failbit,並且如果此輸出流的 異常掩碼 中啟用了對 failbit 的異常((exceptions() & failbit) != 0),則丟擲 ios_base::failure
  • 如果適用,重新整理 tie() 的輸出流。
2) 透過呼叫 sentry::operator bool() 檢查崗位的狀態,這等價於 basic_ios::good
  • 如果運算子返回 false 或哨兵的建構函式丟擲異常,則不會發生輸出。
  • 如果運算子返回 true,則嘗試透過將字元插入輸出流來執行所需的輸出,如同呼叫 rdbuf()->sputc()。還可以使用 std::basic_ostream 的其他公共成員,但除了 overflow()xsputn()sync() 之外,rdbuf() 的虛成員將永遠不會被呼叫。
  • 如果在輸出期間丟擲異常,則在輸出流中設定 badbit。如果此流的 異常掩碼 中啟用了對 badbit 的異常((exceptions() & badbit) != 0),則該異常也會被重新丟擲。
  • 如果沒有丟擲異常,則返回函式指定的值。
3) 在任何情況下,無論是因異常終止還是返回,哨兵的解構函式都會在此函式離開之前被呼叫。

[編輯] 標準庫

以下標準庫函式是 UnformattedOutputFunctions

(C++11 起)

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 63 C++98 異常處理策略缺失 已新增
LWG 160 C++98 確定捕獲的異常是否重新丟擲的過程
提到了一個不存在的函式 exception()
更正為 exceptions()
LWG 165 C++98 唯一允許被呼叫的虛成員
rdbuf() 上是 overflow()
也允許
xsputn()sync()