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に格納します。文字が利用できない場合、FormattedInputFunctionとして必要に応じて設定されるeofbitに加えて、failbitを設定します。s。次のいずれかの条件が満たされると抽出は停止します。- 空白文字(ctype<CharT>ファセットによって決定される)が見つかった。空白文字は抽出されません。
|
(C++20まで) |
|
(C++20以降) |
- 入力シーケンスでファイルの終わりに達した(これもeofbitを設定します)。
Istreamがstd::ios_baseから公的にかつ曖昧さなく派生したクラス型である場合にのみ、オーバーロード解決に参加します。目次 |
[編集] 備考
ストリームの最後の文字である単一の文字を抽出してもeofbitは設定されません。これは、operator>>で最後の整数を抽出するなどの他のフォーマットされた入力関数とは異なりますが、この動作は"%c"書式指定子を持つstd::scanfの動作と一致します。
[編集] パラメータ
| st | - | データを抽出する入力ストリーム |
| 文字 | - | 抽出された文字を格納する文字への参照 |
| 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++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 13 | C++98 | nの定義に存在しない名前eosが言及されていた | CharT()に置換 |
| LWG 68 | C++98 | オーバーロード(2)の出力の最後にヌル文字が格納されていなかった | ヌル文字を格納する |
| LWG 1203 | C++98 | 右辺値ストリームのオーバーロードが基底クラスへの左辺値参照を返していた | 右辺値参照を返す 派生クラスへの |
| LWG 2328 | C++98 | 右辺値ストリームのオーバーロードは、別の引数が左辺値である必要があった | 右辺値を受け入れるようにした |
| LWG 2534 | C++98 | 右辺値ストリームのオーバーロードに制約がなかった | 制約付き |
[編集] 関連項目
| 書式付きデータを抽出する (public member function) |