- istream[meta header]
- std[meta namespace]
- basic_istream[meta class]
- function[meta id-type]
// マニピュレータ
// 3つとも関数へのポインタを引数に取る。
basic_istream<CharT, Traits>&
operator>>(basic_istream<CharT, Traits>& (*pf)(basic_istream<CharT, Traits>&)); // (1) C++03
basic_istream<CharT, Traits>&
operator>>(basic_ios<CharT, Traits>& (*pf)(basic_ios<CharT, Traits>&)); // (2) C++03
basic_istream<CharT, Traits>&
operator>>(ios_base& (*pf)(ios_base&)); // (3) C++03
// bool値・数値・ポインタ
basic_istream<CharT, Traits>& operator>>(bool& n); // (4) C++03
basic_istream<CharT, Traits>& operator>>(short& n); // (5) C++03
basic_istream<CharT, Traits>& operator>>(unsigned short& n); // (6) C++03
basic_istream<CharT, Traits>& operator>>(int& n); // (7) C++03
basic_istream<CharT, Traits>& operator>>(unsigned int& n); // (8) C++03
basic_istream<CharT, Traits>& operator>>(long& n); // (9) C++03
basic_istream<CharT, Traits>& operator>>(unsigned long& n); // (10) C++03
basic_istream<CharT, Traits>& operator>>(long long& n); // (11) C++11
basic_istream<CharT, Traits>& operator>>(unsigned long long& n); // (12) C++11
basic_istream<CharT, Traits>& operator>>(float& f); // (13) C++03
basic_istream<CharT, Traits>& operator>>(double& f); // (14) C++03
basic_istream<CharT, Traits>& operator>>(long double& f); // (15) C++03
basic_istream<CharT, Traits>&
operator>>(extended-floating-point-type& f); // (16) C++23
basic_istream<CharT, Traits>& operator>>(void*& p); // (17) C++03
// ストリームバッファ
basic_istream<CharT, Traits>&
operator>>(basic_streambuf<char_type, Traits>* sb); // (18) C++03ストリームからの入力またはマニピュレータの実行を行う。
- (1)-(3) : マニピュレータを実行するオーバーロードそれ自体は、書式化入力関数・非書式化入力関数いずれにも該当しない。
- マニピュレータが書式化入力関数・非書式化入力関数であるということはあり得る(例:
ws)。
- マニピュレータが書式化入力関数・非書式化入力関数であるということはあり得る(例:
- (4)-(17) : 数値型(
boolも含む)とvoid*に対するオーバーロードは、書式化入力関数である。 - (18) :
basic_streambufに対するオーバーロードは、非書式化入力関数である。
pf(*this)を呼び出す。
sentryオブジェクトを構築する。sentryオブジェクトが失敗を示した場合、何もしないnum_get::getを使用して入力のパース・数値への変換を行う。intとshort:longを実引数に取るものを使用する。結果がintとshortそれぞれの範囲外の値になった場合、failbitを追加する- 拡張浮動小数点数型 :
- 拡張浮動小数点数型の変換順位が
long doubleより大きい場合、条件付きサポートとなる - そうでない場合、対応する標準浮動小数点数型
FPを以下のように定義し、FP型の値として値を入力したあと、拡張浮動小数点数型にキャストして代入する- 拡張浮動小数点数型の変換順位が
float以下の場合、FPをfloatとする - そうでなく、拡張浮動小数点数型の変換順位が
double以下の場合、FPをdoubleとする - そうでない場合、
FPをlong doubleとする
- 拡張浮動小数点数型の変換順位が
- 拡張浮動小数点数型の変換順位が
num_get::getから得られたiostate値を実引数にしてsetstate関数を呼び出す
ストリームからの入力を別のストリームバッファに出力する。
- 仮引数
sbがヌルポインタの場合、setstate(failbit)を呼び出して終了する sentryオブジェクトを構築する。sentryオブジェクトが失敗を示した場合、何もしない- 以下のいずれかを満たすまで、
this内のストリームバッファから文字を入力してsbへ出力する- EOFに達した
- 出力処理に失敗した(この場合、失敗したときの文字は入力側のストリームバッファに戻される)
- 例外が発生した
入力がなされなかった場合、setstate(failbit)を呼び出す。
*this
#include <iostream>
int main() {
int x;
// 好きな整数を入力してください
if (std::cin >> x) {
std::cout << x << "が入力されました。" << std::endl;
}
}- std::cin[link /reference/iostream/cin.md]
1
1が入力されました。
TBD
- C++98
- C++11:
long long、unsigned long longを実引数として受け取るものが追加された
- このほかの
>>演算子関数 - 入力対象の型
- N2114
long longGoes to the Library, Revision 1 - P1467R9 Extended floating-point types and standard names
- C++23で拡張浮動小数点数型の
istream入力がサポートされた
- C++23で拡張浮動小数点数型の