名前空間
変種
操作

operator>>(std::basic_istream)

提供: cppreference.com
< cpp‎ | io‎ | basic 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)
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 );
(2)
(3)
template< class CharT, class Traits, class T >
basic_istream<CharT,Traits>& operator>>( basic_istream<CharT,Traits>&& st, T& value );
(C++11およびそれ以降)
(C++17以前)
template< class CharT, class Traits, class T >
basic_istream<CharT,Traits>& operator>>( basic_istream<CharT,Traits>&& st, T&& value );
(C++17およびそれ以降)

文字入力操作を行います。

1) FormattedInputFunction として動作します。 sentry オブジェクトの構築 (先行するホワイトスペースをスキップするかもしれません) および確認の後、文字を抽出し、それを ch に格納します。 文字が利用可能でなければ、 (FormattedInputFunction の要件としてセットされる eofbit に加えて) failbit をセットします。

2) FormattedInputFunction として動作します。 sentry オブジェクトの構築 (先行するホワイトスペースをスキップするかもしれません) および確認の後、連続する文字を抽出し、それらを最初の要素が s によって指されている文字配列の連続する位置に格納します。 抽出は以下の条件のいずれかが満たされると停止します。

  • ホワイトスペース文字が見つかった (ctype<CharT> ファセットによって判定されます)。 そのホワイトスペース文字は抽出されません。
  • st.width() - 1 個の文字が抽出された。
  • 入力シーケンスでファイル終端が発生した (これは eofbit もセットします)。

いずれの場合も、出力の終端に追加のヌル文字値 CharT() が格納されます。 文字が抽出されなかった場合は failbit をセットします (ヌル文字はその場合も出力の最初の位置に書き込まれます)。 最後に、 std::setw の効果 (もしあれば) を取り消すために st.width(0) を呼びます。

3)
右辺値参照を入力ストリームオブジェクトに渡して適切な抽出演算子を呼びます (st >> value と同等です)。 (C++11およびそれ以降)
(C++17以前)
右辺値参照を入力ストリームオブジェクトに渡して適切な抽出演算子を呼びます (st >> std::forward<T>(value) と同等です)。 この関数は、式 st >> std::forward<T>(value) が well-formed でなければ、オーバーロード解決に参加しません。 (C++17およびそれ以降)

目次

[編集] ノート

ストリームの最後の文字の抽出は eofbit をセットしません。 これは operator>> による最後の整数の抽出のような他の書式付き入力関数と異なりますが、この動作は "%c" 書式指定子 を使用した {lc|std::scanf}} の動作と一致します。

[編集] 引数

st - データを抽出する入力ストリーム
ch - 抽出した文字を格納する文字への参照
s - 抽出した文字を格納する文字列へのポインタ

[編集] 戻り値

st

[編集]

#include <iostream>
#include <iomanip>
#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

[編集] 関連項目

書式付きデータを抽出します
(パブリックメンバ関数) [edit]