operator>>(std::basic_istream)
定義於標頭檔案 <istream> |
||
template< class CharT, class Traits > basic_istream<CharT, Traits>& |
(1) | |
(2) | ||
template< class CharT, class Traits> basic_istream<CharT, Traits>& |
(C++20 前) | |
template< class CharT, class Traits, std::size_t N > basic_istream<CharT, Traits>& |
(C++20 起) | |
template< class Istream, class T > Istream&& |
(3) | (C++11 起) |
ch
。如果無可用字元,則設定 failbit(此外還會設定 eofbit,這是 FormattedInputFunction 的要求)。s
指向。當滿足以下任何條件時,提取停止:- 找到空白字元(由 ctype<CharT> facet 決定)。空白字元不被提取。
|
(C++20 前) |
|
(C++20 起) |
- 輸入序列中發生檔案結束(這也會設定 eofbit)。
Istream
是公開且明確地從 std::ios_base 派生的類型別時才參與過載決議。目錄 |
[編輯] 注意
提取作為流最後一個字元的單個字元不會設定 eofbit
:這與其他格式化輸入函式(例如使用 operator>> 提取最後一個整數)不同,但此行為與 std::scanf 使用 "%c" 格式說明符時的行為匹配。
[編輯] 引數
st | - | 用於提取資料的輸入流 |
ch | - | 對字元的引用,用於儲存提取的字元 |
s | - | 指向(C++20 前) 字元陣列的指標,用於儲存提取的字元 |
[編輯] 返回值
[編輯] 示例
#include <iomanip> #include <iostream> #include <sstream> int main() { std::string input = "n greetings"; std::istringstream stream(input); char c; const int MAX = 6; char cstr[MAX]; stream >> c >> std::setw(MAX) >> cstr; std::cout << "c = " << c << '\n' << "cstr = " << cstr << '\n'; double f; std::istringstream("1.23") >> f; // rvalue stream extraction std::cout << "f = " << f << '\n'; }
輸出
c = n cstr = greet f = 1.23
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 13 | C++98 | n 的定義提及了不存在的名稱 eos | 替換為 CharT() |
LWG 68 | C++98 | 過載 (2) 的輸出末尾未儲存空字元 | 儲存一個空字元 |
LWG 1203 | C++98 | 右值流的過載返回了基類的左值引用 | 返回右值引用 到派生類 |
LWG 2328 | C++98 | 右值流的過載要求另一個引數為左值 | 改為接受右值 |
LWG 2534 | C++98 | 右值流的過載未受約束 | 已受約束 |
[編輯] 參閱
提取格式化資料 (公有成員函式) |