Namespaces
Variants

operator>> (std::basic_istream)

From cppreference.net
ヘッダーで定義 <istream>
template < class CharT, class Traits >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT & ch ) ;

template < class Traits >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char & ch ) ;

template < class Traits >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char & ch ) ;
(1)
(2)
template < class CharT, class Traits >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT * s ) ;

template < class Traits >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char * s ) ;

template < class Traits >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char * s ) ;
(C++20まで)
template < class CharT, class Traits, std:: size_t N >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT ( & s ) [ N ] ) ;

template < class Traits, std:: size_t N >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char ( & s ) [ N ] ) ;

template < class Traits, std:: size_t N >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char ( & s ) [ N ] ) ;
(C++20から)
template < class Istream, class T >

Istream &&

operator >> ( Istream && st, T && value ) ;
(3) (C++11以降)
1,2) 文字入力操作を実行します。
1) FormattedInputFunction として振る舞う。sentryオブジェクトを構築・チェックした後(先頭の空白をスキップする場合がある)、文字を抽出して ch に格納する。文字が利用できない場合、 failbit を設定する( FormattedInputFunction の要件として設定が必須な eofbit に加えて)。
2) FormattedInputFunction として振る舞う。セントリオブジェクトを構築・チェックした後(先頭の空白文字をスキップする場合がある)、連続する文字を抽出し、 先頭要素が (C++20まで) s によって指される文字配列の連続する位置に格納する。以下のいずれかの条件が満たされると抽出は停止する:
  • ctype<CharT> ファセットによって判定される)空白文字が検出された場合。空白文字は抽出されない。
  • st. width ( ) が0より大きい場合、 st. width ( ) - 1 文字が格納される。
(C++20まで)
  • n - 1 文字が格納される。ここで n は以下のように定義される:
  • st. width ( ) が0より大きい場合、 std:: min ( std:: size_t ( st. width ( ) ) , N ) ;
  • それ以外の場合、 n N となる。
(C++20以降)
  • 入力シーケンスでファイル終端が発生した場合(これにより eofbit も設定される)。
いずれの場合も、追加のヌル文字値 CharT ( ) が出力の末尾に格納される。文字が抽出されなかった場合、 failbit を設定する(ヌル文字は依然として出力の先頭位置に書き込まれる)。最後に、 st. width ( 0 ) を呼び出して std::setw の効果があればそれを解除する。
3) 入力ストリームオブジェクトへの右辺値参照に対して適切な抽出演算子を呼び出す(以下と等価: st >> std:: forward < T > ( value ) )。このオーバーロードは、 st >> std:: forward < T > ( value ) が適切な形式であり、かつ Istream std::ios_base から公開かつ明確に派生したクラス型である場合にのみ、オーバーロード解決に参加する。

目次

注記

ストリームの最後の文字である単一の文字を抽出しても、 eofbit は設定されません: これは、最後の整数を operator >> で抽出するといった他の書式付き入力関数とは異なりますが、この動作は std::scanf "%c" 書式指定子を用いた場合の動作と一致します。

パラメータ

st - データを抽出する入力ストリーム
ch - 抽出された文字を格納するための文字への参照
s - ポインタ (C++20まで) 抽出された文字を格納するための文字配列

戻り値

1,2) st
3) std :: move ( st )

#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 右辺値ストリーム用オーバーロードが制約されていなかった 制約を追加

関連項目

書式化データを抽出
(公開メンバ関数)