std::basic_istream<CharT,Traits>:: operator>>
|
basic_istream
&
operator
>>
(
unsigned
short
&
value
)
;
|
(1) | |
|
basic_istream
&
operator
>>
(
unsigned
int
&
value
)
;
|
(2) | |
|
basic_istream
&
operator
>>
(
long
&
value
)
;
|
(3) | |
|
basic_istream
&
operator
>>
(
unsigned
long
&
value
)
;
|
(4) | |
|
basic_istream
&
operator
>>
(
long
long
&
value
)
;
|
(5) | (C++11以降) |
|
basic_istream
&
operator
>>
(
unsigned
long
long
&
value
)
;
|
(6) | (C++11以降) |
|
basic_istream
&
operator
>>
(
float
&
value
)
;
|
(7) | |
|
basic_istream
&
operator
>>
(
double
&
value
)
;
|
(8) | |
|
basic_istream
&
operator
>>
(
long
double
&
value
)
;
|
(9) | |
|
basic_istream
&
operator
>>
(
bool
&
value
)
;
|
(10) | |
|
basic_istream
&
operator
>>
(
void
*
&
value
)
;
|
(11) | |
|
basic_istream
&
operator
>>
(
short
&
value
)
;
|
(12) | |
|
basic_istream
&
operator
>>
(
int
&
value
)
;
|
(13) | |
|
basic_istream
&
operator
>>
(
/* extended-floating-point-type */
&
value
)
;
|
(14) | (C++23以降) |
|
basic_istream
&
operator
>>
(
std::
ios_base
&
(
*
func
)
(
std::
ios_base
&
)
)
;
|
(15) | |
|
basic_istream
&
operator
>>
(
std::
basic_ios
<
CharT, Traits
>
&
( * func ) ( std:: basic_ios < CharT, Traits > & ) ) ; |
(16) | |
|
basic_istream
&
operator
>>
(
basic_istream
&
(
*
func
)
(
basic_istream
&
)
)
;
|
(17) | |
|
basic_istream
&
operator
>>
(
std::
basic_streambuf
<
CharT, Traits
>
*
sb
)
;
|
(18) | |
入力ストリームから値を抽出します。
-
lval
<
std::
numeric_limits
<
short
>
::
min
(
)
の場合、
failbitを設定し、 std:: numeric_limits < short > :: min ( ) を val に格納する。 -
それ以外の場合、
std::
numeric_limits
<
short
>
::
max
(
)
<
lval
の場合、
failbitを設定し、 std:: numeric_limits < short > :: max ( ) を val に格納する。 - それ以外の場合、 static_cast < short > ( lval ) を val に格納する。
-
lval
<
std::
numeric_limits
<
int
>
::
min
(
)
の場合、
failbitを設定し、 std:: numeric_limits < int > :: min ( ) を val に格納する。 -
それ以外の場合、
std::
numeric_limits
<
int
>
::
max
(
)
<
lval
の場合、
failbitを設定し、 std:: numeric_limits < int > :: max ( ) を val に格納する。 - それ以外の場合、 static_cast < int > ( lval ) を val に格納する。
FP
を以下のように決定します:
-
/* extended-floating-point-type */
の
浮動小数点変換ランク
が
float
のランク以下である場合、
FPは float となります。 -
それ以外の場合、
/* extended-floating-point-type */
の浮動小数点変換ランクが
double
のランク以下である場合、
FPは double となります。 -
それ以外の場合、
FPは long double となります。
FP
値
fval
を抽出する。その後:
-
fval
<
-
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
の場合、
failbitを設定し、 - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) を val に格納する。 -
それ以外の場合、
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
<
fval
の場合、
failbitを設定し、 std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) を val に格納する。 - それ以外の場合、 static_cast < /* extended-floating-point-type */ > ( fval ) を val に格納する。
-
- 入力シーケンスでファイル終端が発生した場合;
- 出力シーケンスへの挿入が失敗した場合(この場合、挿入対象の文字は抽出されない);
-
例外が発生した場合(この場合、例外は捕捉され、文字が一つも挿入されずかつ
failbitがexceptions()で有効になっている場合にのみ再スローされる)。
抽出が失敗した場合(例えば数字が期待される場所に文字が入力された場合)、
value
にはゼロが書き込まれ、
failbit
が設定されます。符号付き整数の場合、抽出結果が
value
に格納するには大きすぎる、または小さすぎる値となる場合、
std::
numeric_limits
<
T
>
::
max
(
)
または
std::
numeric_limits
<
T
>
::
min
(
)
(それぞれ)が書き込まれ、
failbit
フラグが設定されます。符号なし整数の場合、抽出結果が
value
に格納するには大きすぎる、または小さすぎる値となる場合、
std::
numeric_limits
<
T
>
::
max
(
)
が書き込まれ、
failbit
フラグが設定されます。
目次 |
パラメータ
| value | - | 抽出された値を格納する整数または浮動小数点値への参照 |
| func | - | I/O マニピュレータ関数へのポインタ |
| sb | - | すべてのデータを書き込むストリームバッファへのポインタ |
戻り値
注記
オーバーロード ( 14 ) の場合、拡張浮動小数点型が標準浮動小数点型のいずれのランクとも等しくない浮動小数点変換ランクを持つとき、変換中の二重回丸めにより不正確な結果が生じる可能性があります。 std::from_chars() は、最大精度が重要な状況で使用できます。
例
#include <iomanip> #include <iostream> #include <sstream> int main() { std::string input = "41 3.14 false hello world"; std::istringstream stream(input); int n; double f; bool b; stream >> n >> f >> std::boolalpha >> b; std::cout << "n = " << n << '\n' << "f = " << f << '\n' << "b = " << std::boolalpha << b << '\n'; // extract the rest using the streambuf overload stream >> std::cout.rdbuf(); std::cout << '\n'; }
出力:
n = 41 f = 3.14 b = false hello world
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 64 | C++98 |
オーバーロード
(18)
が
setstate
(
failbit
)
の呼び出しによって
スローされた std::ios_base::failure のみを再スローできるかどうかが不明確 |
捕捉されたすべての例外を
再スロー可能 |
| LWG 118 | C++98 |
オーバーロード
(12,13)
は抽出を
num_get::get
に委譲していたが、
これは short および int のオーバーロードを持たない |
short
または
int
の代わりに
long 値が抽出される |
| LWG 413 | C++98 |
オーバーロード
(18)
は
sb
からの文字抽出中にスローされた例外のみを
再スローしていたが、文字は * this から抽出される |
sb を * this に修正 |
| LWG 567 | C++98 |
オーバーロード
(18)
は
LWG issue 60
の解決により
FormattedInputFunction として動作していた |
これは
UnformattedInputFunction として動作する |
| LWG 661 | C++98 |
オーバーロード
(12,13)
は
LWG issue 118
の解決により
抽出された数値を value に格納していなかった |
オーバーフローが発生しなければ
数値を格納する |
| LWG 696 | C++98 | 抽出失敗時に value が変更されなかった |
ゼロまたは最小値/
最大値に設定される |
関連項目
|
文字と文字配列を抽出する
(関数テンプレート) |
|
|
文字列に対するストリーム入出力を実行する
(関数テンプレート) |
|
|
ビットセットのストリーム入出力を実行する
(関数テンプレート) |
|
|
複素数のシリアライズとデシリアライズを実行する
(関数テンプレート) |
|
|
(C++11)
|
擬似乱数エンジンに対するストリーム入出力を実行する
(関数テンプレート) |
|
(C++11)
|
擬似乱数分布に対するストリーム入出力を実行する
(関数テンプレート) |
|
文字ブロックを抽出する
(公開メンバ関数) |
|
|
利用可能な文字ブロックを抽出する
(公開メンバ関数) |
|
|
文字を抽出する
(公開メンバ関数) |
|
|
指定された文字が見つかるまで文字を抽出する
(公開メンバ関数) |
|
|
(C++17)
|
文字シーケンスを整数値または浮動小数点値に変換する
(関数) |