名稱空間
變體
操作

C++ 命名要求: UnformattedInputFunction

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




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

 

[編輯] 要求

UnformattedInputFunction 是一個流輸入函式,執行以下操作:

1) 構造一個型別為 basic_istream::sentry 的物件,該物件具有自動儲存期,並且 noskipws 引數設定為 true,執行以下操作:
  • 如果輸入流上設定了 eofbitbadbit,則同時設定 failbit;如果在此輸入流的 異常掩碼 中啟用了 failbit 上的異常 ((exceptions() & failbit) != 0),則丟擲 ios_base::failure
  • 如果適用,重新整理 tie()'d 輸出流。
2) 透過呼叫 sentry::operator bool() 檢查崗哨的狀態,這等效於 basic_ios::good
  • 如果運算子返回 false 或崗哨的建構函式丟擲異常
  • 將輸入流中提取的字元數 (gcount) 設定為零。
  • 如果呼叫該函式是為了寫入 CharT 陣列,則將 CharT()(空字元)寫入陣列的第一個位置。
  • 如果運算子返回 true,則執行輸入,如同呼叫 rdbuf()->sbumpc()rdbuf()->sgetc()
  • 如果到達流的末尾(呼叫 rdbuf()->sbumpc()rdbuf()->sgetc() 返回 Traits::eof()),則設定 eofbit。如果在此流的 異常掩碼 中啟用了 eofbit 上的異常 ((exceptions() & eofbit) != 0),則丟擲 ios_base::failure
  • 如果在輸入期間丟擲異常,則在輸入流中設定 badbit。如果在此流的 異常掩碼 中啟用了 badbit 上的異常 ((exceptions() & badbit) != 0),則該異常也會被重新丟擲。
  • 如果在輸入期間沒有丟擲異常,則設定輸入流中提取的字元數 (gcount)。
3) 無論如何,無論是因異常終止還是返回,在離開此函式之前都會呼叫崗哨的解構函式。

[編輯] 標準庫

以下標準庫函式是 UnformattedInputFunction

[編輯] 缺陷報告

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

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 61 C++98 由於以下原因丟擲異常是否會導致設定 badbit 尚不清楚:
設定 eofbit 和/或 failbit 將導致設定 badbit
basic_ios::clear 丟擲的異常
未被捕獲或重新丟擲
LWG 160 C++98 確定捕獲的異常是否重新丟擲的過程
提到了一個不存在的函式 exception()
更正為 exceptions()
LWG 243 C++98 sentry::operator bool() 返回 false 時的行為
或崗哨物件構造失敗時的行為未指定
已指定