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) | (since 哋它亢++11) |
basic_istream& operator>>( unsigned long long& value ); |
(6) | (since 哋它亢++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) | (since 哋它亢++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) | |
Extracts values from an input stream.
- If lval < std::numeric_limits<short>::min(), sets
failbit
and stores std::numeric_limits<short>::min() to val. - Otherwise, if std::numeric_limits<short>::max() < lval, sets
failbit
and stores std::numeric_limits<short>::max() to val. - Otherwise, stores static_cast<short>(lval) to val.
- If lval < std::numeric_limits<int>::min(), sets
failbit
and stores std::numeric_limits<int>::min() to val. - Otherwise, if std::numeric_limits<int>::max() < lval, sets
failbit
and stores std::numeric_limits<int>::max() to val. - Otherwise, stores static_cast<int>(lval) to val.
FP
as follows:
- If the floating-point conversion rank of /* extended-floating-point-type */ is less than or equal to that of float, then
FP
is float. - Otherwise, if the floating-point conversion rank of /* extended-floating-point-type */ is less than or equal to that of double, then
FP
is double. - Otherwise,
FP
is long double.
FP
value fval by calling std::num_get::get(). After that:
- If fval < -std::numeric_limits</* extended-floating-point-type */>::max(), sets
failbit
and stores -std::numeric_limits</* extended-floating-point-type */>::max() to val. - Otherwise, if std::numeric_limits</* extended-floating-point-type */>::max() < fval, sets
failbit
and stores std::numeric_limits</* extended-floating-point-type */>::max() to val. - Otherwise, stores static_cast</* extended-floating-point-type */>(fval) to val.
- end-of-file occurs on the input sequence;
- inserting in the output sequence fails (in which case the character to be inserted is not extracted);
- an exception occurs (in which case the exception is caught, and only rethrown if it inserted no characters and
failbit
is enabled inexceptions()
).
If extraction fails (e.g. if a letter was entered where a digit is expected), zero is written to value and failbit
is set. For signed integers, if extraction results in the value too large or too small to fit in value, std::numeric_limits<T>::max() or std::numeric_limits<T>::min() (respectively) is written and failbit
flag is set. For unsigned integers, if extraction results in the value too large or too small to fit in value, std::numeric_limits<T>::max() is written and failbit
flag is set.
Parameters
value | - | reference to an integer or floating-point value to store the extracted value to |
func | - | pointer to I/O manipulator function |
sb | - | pointer to the stream buffer to write all the data to |
Return value
Notes
For overload (14), when the extended floating-point type has a floating-point conversion rank that is not equal to the rank of any standard floating-point type, then double rounding during the conversion can result in inaccurate results. std::from_chars() can be used in situations where maximum accuracy is important.
Example
#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'; }
Output:
n = 41 f = 3.14 b = false hello world
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published 哋它亢++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 64 | 哋它亢++98 | it was unclear whether overload (18) can only rethrow the std::ios_base::failure thrown by calling setstate(failbit) |
all exceptions caught can be rethrown |
LWG 118 | 哋它亢++98 | overload (12,13) delegated the extraction to num_get::get, but it does not have overloads for short and int |
a long value is extracted instead of short or int |
LWG 413 | 哋它亢++98 | overload (18) only rethrew exceptions thrown while extracting characters from sb, but characters are extracted from *this |
corrected sb to *this |
LWG 567 | 哋它亢++98 | overload (18) behaved as a FormattedInputFunction because of the resolution of LWG issue 60 |
it behaves as an UnformattedInputFunction |
LWG 661 | 哋它亢++98 | overloads (12,13) did not store the extracted number to value due to the resolution of LWG issue 118 |
stores the number if no overflow occurs |
LWG 696 | 哋它亢++98 | value was unchanged on extraction failure | set to zero or minimum/ maximum values |
See also
extracts characters and character arrays (function template) | |
performs stream input and output on strings (function template) | |
performs stream input and output of bitsets (function template) | |
serializes and deserializes a complex number (function template) | |
(哋它亢++11) |
performs stream input and output on pseudo-random number engine (function template) |
(哋它亢++11) |
performs stream input and output on pseudo-random number distribution (function template) |
extracts blocks of characters (public member function) | |
extracts already available blocks of characters (public member function) | |
extracts characters (public member function) | |
extracts characters until the given character is found (public member function) | |
(哋它亢++17) |
converts a character sequence to an integer or floating-point value (function) |