| I/O manipulators | ||||
| Print functions(C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++20) | ||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
| Synchronized Output | ||||
(C++20) | ||||
| Types | ||||
| Error category interface | ||||
(C++11) | ||||
(C++11) |
| Global objects | ||||
| Member functions | ||||
(C++11) | ||||
| Formatted input | ||||
basic_istream::operator>> | ||||
| Unformatted input | ||||
| Positioning | ||||
| Miscellaneous | ||||
(C++11) | ||||
| Member classes | ||||
| Non-member functions | ||||
basic_istream& operator>>(unsignedshort& value); | (1) | |
basic_istream& operator>>(unsignedint& value); | (2) | |
basic_istream& operator>>(long& value); | (3) | |
basic_istream& operator>>(unsignedlong& value); | (4) | |
basic_istream& operator>>(longlong& value); | (5) | (since C++11) |
basic_istream& operator>>(unsignedlonglong& value); | (6) | (since C++11) |
basic_istream& operator>>(float& value); | (7) | |
basic_istream& operator>>(double& value); | (8) | |
basic_istream& operator>>(longdouble& 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 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) | |
Extracts values from an input stream.
failbit and storesstd::numeric_limits<short>::min() toval.failbit and storesstd::numeric_limits<short>::max() toval.failbit and storesstd::numeric_limits<int>::min() toval.failbit and storesstd::numeric_limits<int>::max() toval.FP as follows:FP isfloat.FP isdouble.FP islongdouble.FP valuefval by callingstd::num_get::get(). After that:failbit and stores-std::numeric_limits</* extended-floating-point-type */>::max() toval.failbit and storesstd::numeric_limits</* extended-floating-point-type */>::max() toval.failbit is enabled inexceptions()).If extraction fails (e.g. if a letter was entered where a digit is expected), zero is written tovalue andfailbit is set. For signed integers, if extraction results in the value too large or too small to fit invalue,std::numeric_limits<T>::max() orstd::numeric_limits<T>::min() (respectively) is written andfailbit flag is set. For unsigned integers, if extraction results in the value too large or too small to fit invalue,std::numeric_limits<T>::max() is written andfailbit flag is set.
Contents |
| 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 |
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.
#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 = 41f = 3.14b = falsehello world
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 64 | C++98 | it was unclear whether overload(18) can only rethrow the std::ios_base::failure thrown by callingsetstate(failbit) | all exceptions caught can be rethrown |
| LWG 118 | C++98 | overload(12,13) delegated the extraction tonum_get::get, but it does not have overloads forshort andint | along value is extracted instead ofshort orint |
| LWG 413 | C++98 | overload(18) only rethrew exceptions thrown while extracting characters fromsb, but characters are extracted from*this | correctedsb to*this |
| LWG 567 | C++98 | overload(18) behaved as aFormattedInputFunction because of the resolution ofLWG issue 60 | it behaves as an UnformattedInputFunction |
| LWG 661 | C++98 | overloads(12,13) did not store the extracted number tovalue due to the resolution ofLWG issue 118 | stores the number if no overflow occurs |
| LWG 696 | C++98 | value was unchanged on extraction failure | set to zero or minimum/ maximum values |
| extracts characters and character arrays (function template)[edit] | |
| performs stream input and output on strings (function template)[edit] | |
| performs stream input and output of bitsets (function template)[edit] | |
| serializes and deserializes a complex number (function template)[edit] | |
(C++11) | performs stream input and output on pseudo-random number engine (function template)[edit] |
(C++11) | performs stream input and output on pseudo-random number distribution (function template)[edit] |
| extracts blocks of characters (public member function)[edit] | |
| extracts already available blocks of characters (public member function)[edit] | |
| extracts characters (public member function)[edit] | |
| extracts characters until the given character is found (public member function)[edit] | |
(C++17) | converts a character sequence to an integer or floating-point value (function)[edit] |