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
を設定する(
FormattedInputFunction
の要件として設定が必須な
eofbit
に加えて)。
s
によって指される文字配列の連続する位置に格納する。以下のいずれかの条件が満たされると抽出は停止する:
- ( ctype<CharT> ファセットによって判定される)空白文字が検出された場合。空白文字は抽出されない。
|
(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++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 13 | C++98 | n の定義に存在しない名前 eos が記述されていた | CharT ( ) に置き換え |
| LWG 68 | C++98 | オーバーロード(2)で出力の末尾にnull文字が格納されなかった | null文字を格納する |
| LWG 1203 | C++98 | 右辺値ストリーム用オーバーロードが基底クラスへの左辺値参照を返した |
派生クラスへの右辺値参照を返す
|
| LWG 2328 | C++98 | 右辺値ストリーム用オーバーロードが他の引数に左辺値を要求した | 右辺値を受け入れるように変更 |
| LWG 2534 | C++98 | 右辺値ストリーム用オーバーロードが制約されていなかった | 制約を追加 |
関連項目
|
書式化データを抽出
(公開メンバ関数) |