名稱空間
變體
操作

C++ 命名要求: FormattedInputFunction

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




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

 

[編輯] 要求

FormattedInputFunction 是一種流輸入函式,它執行以下操作:

  • 構造一個具有自動儲存期的 basic_istream::sentry 型別物件,其中 noskipws 引數設定為 false,該物件執行以下操作:
  • 如果輸入流上設定了 eofbitbadbit,則同時設定 failbit,並且如果此輸入流的異常掩碼中啟用了 failbit 上的異常((exceptions() & failbit) != 0),則丟擲 ios_base::failure
  • 如果適用,重新整理 tie() 繫結的輸出流。
  • 如果在此輸入流上設定了 ios_base::skipws 標誌,則從輸入流中提取並丟棄字元,直到以下條件之一變為真:
  • 輸入流上下一個可用字元不是空白字元,由當前此輸入流中注入的 locale 的 std::ctype facet 測試。非空白字元未被提取。
  • 到達流的末尾,在這種情況下設定 failbiteofbit,並且如果流對其中一個位上的異常是開的,則丟擲 ios_base::failure
  • 透過呼叫 sentry::operator bool() 檢查崗哨的狀態,這等效於 basic_ios::good
  • 如果崗哨返回 false 或崗哨的建構函式丟擲異常,則不進行輸入。
  • 如果崗哨返回 true,則執行輸入,如同呼叫 rdbuf()->sbumpc()rdbuf()->sgetc()
  • 如果到達流的末尾(呼叫 rdbuf()->sbumpc()rdbuf()->sgetc() 返回 Traits::eof()),則設定 eofbit。如果此流的異常掩碼中啟用了 eofbit 上的異常((exceptions() & eofbit) != 0),則丟擲 ios_base::failure
  • 如果在輸入過程中丟擲異常,則在輸入流中設定 badbit。如果此流的異常掩碼中啟用了 badbit 上的異常((exceptions() & badbit) != 0),則異常也會被重新丟擲。
  • 如果未丟擲異常,則返回 *this
  • 無論如何,無論是透過異常終止還是返回,在離開此函式之前都會呼叫崗哨的解構函式。

[編輯] 標準庫

以下標準庫函式是 FormattedInputFunctions

[編輯] 缺陷報告

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

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 160 C++98 確定捕獲的異常是否重新丟擲的過程
提到了一個不存在的函式 exception()
更正為 exceptions()