名前空間
変種
操作

operator>>(std::basic_istream)

提供: cppreference.com
< cpp‎ | io‎ | basic istream
 
 
入出力ライブラリ
入出力マニピュレータ
Cスタイルの入出力
バッファ
(C++98で非推奨)
ストリーム
抽象
ファイル入出力
文字列入出力
配列入出力
(C++98で非推奨)
(C++98で非推奨)
(C++98で非推奨)
同期出力
エラーカテゴリインタフェース
(C++11)
 
 
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以上)
(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-2) 文字入力操作を行います。

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

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

  • ホワイトスペース文字が見つかった (ctype<CharT> ファセットによって判定されます)。 そのホワイトスペース文字は抽出されません。
  • st.width() - 1 個の文字が抽出された (st.width() がゼロより大きい場合)。
(C++20未満)
  • min(std::size_t(st.width()), N)  - 1 個の文字が抽出された (st.width() がゼロより大きい場合)
  • N - 1 個の文字が抽出された (それ以外の場合)
(C++20以上)
  • 入力シーケンスでファイル終端が発生した (これは 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" 書式指定子 を使用した std::scanf の動作と一致します。

[編集] 引数

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

[編集] 戻り値

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; // 右辺値ストリーム抽出
    std::cout << "f = " << f << '\n';
}

出力:

c = n
cstr = greet
f = 1.23

[編集] 関連項目

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