table of contents
        
      
      
    | std::basic_istream::operator>>(3) | C++ Standard Libary | std::basic_istream::operator>>(3) | 
NAME¶
std::basic_istream::operator>> - std::basic_istream::operator>>
Synopsis¶
 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 C++11)
  
   basic_istream& operator>>( unsigned long long& value );
    (6) (since 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 */&
    (14) (since C++23)
  
   value );
  
   basic_istream& operator>>( std::ios_base&
    (*func)(std::ios_base&) (15)
  
   );
  
   basic_istream& operator>>( std::basic_ios<CharT, Traits>&
  
   (*func)(std::basic_ios<CharT, (16)
  
   Traits>&) );
  
   basic_istream& operator>>( basic_istream&
    (*func)(basic_istream&) (17)
  
   );
  
   basic_istream& operator>>( std::basic_streambuf<CharT,
    Traits>* (18)
  
   sb );
  
   Extracts values from an input stream.
  
   1-11) Extracts a value potentially skipping preceding whitespace. The value
    is
  
   stored to a given reference value.
  
   This function behaves as a FormattedInputFunction. After constructing and
    checking
  
   the sentry object, which may skip leading whitespace, extracts a value by
    calling
  
   std::num_get::get().
  
   12) Extracts a short value potentially skipping preceding whitespace. The
    value is
  
   stored to a given reference value.
  
   This function behaves as a FormattedInputFunction. After constructing and
    checking
  
   the sentry object, which may skip leading whitespace, extracts a long value
    lval by
  
   calling std::num_get::get(). After that:
  
   * 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.
  
   13) Extracts an int value potentially skipping preceding whitespace. The
    value is
  
   stored to a given reference value.
  
   This function behaves as a FormattedInputFunction. After constructing and
    checking
  
   the sentry object, which may skip leading whitespace, extracts a long value
    lval by
  
   calling std::num_get::get(). After that:
  
   * 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.
  
   14) Extracts an extended floating-point value potentially skipping preceding
  
   whitespace. The value is stored to a given reference value. The library
    provides
  
   overloads for all cv-unqualified extended floating-point types as the
    referenced
  
   type of the parameter value.
  
   Determines the standard floating-point type 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.
  
   This function behaves as a FormattedInputFunction. After constructing and
    checking
  
   the sentry object, which may skip leading whitespace, extracts an 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.
  
   15-17) Calls func(*this), where func is an I/O manipulator.
  
   18) Behaves as an UnformattedInputFunction. After constructing and checking
    the
  
   sentry object, extracts all data from *this and stores it to sb. The
    extraction
  
   stops if one of the following conditions are met:
  
   * 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 in exceptions()).
  
   In either case, stores the number of characters extracted in the member
    variable
  
   accessed by subsequent calls to gcount(). If sb is a null pointer or if no
  
   characters were inserted into sb, calls setstate(failbit) (which may throw
  
   std::ios_base::failure if enabled).
  
   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¶
 1-16,18) *this
  
   17) func(*this)
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¶
// Run this code
  
   #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 C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   it was unclear whether overload (18)
  
   LWG 64 C++98 can only rethrow the all exceptions caught
  
   std::ios_base::failure thrown by can be rethrown
  
   calling setstate(failbit)
  
   overload (12,13) delegated the
  
   LWG 118 C++98 extraction to num_get::get, a long value is extracted
  
   but it does not have overloads for instead of short or int
  
   short and int
  
   overload (18) only rethrew exceptions
  
   LWG 413 C++98 thrown while extracting corrected sb to *this
  
   characters from sb, but characters are
  
   extracted from *this
  
   overload (18) behaved as a
  
   LWG 567 C++98 FormattedInputFunction it behaves as an
  
   because of the resolution of LWG issue UnformattedInputFunction
  
   60
  
   overloads (12,13) did not store the
  
   LWG 661 C++98 extracted number stores the number if
  
   to value due to the resolution of LWG no overflow occurs
  
   issue 118
  
   LWG 696 C++98 value was unchanged on extraction set to zero or minimum/
  
   failure maximum values
See also¶
 operator>>(std::basic_istream) extracts characters and
    character arrays
  
   (function template)
  
   operator<< performs stream input and output on strings
  
   operator>> (function template)
  
   operator<< performs stream input and output of bitsets
  
   operator>> (function template)
  
   operator<< serializes and deserializes a complex number
  
   operator>> (function template)
  
   operator<< performs stream input and output on pseudo-random
  
   operator>> number engine
  
   (C++11) (function template)
  
   operator<< performs stream input and output on pseudo-random
  
   operator>> number distribution
  
   (C++11) (function template)
  
   read extracts blocks of characters
  
   (public member function)
  
   readsome extracts already available blocks of characters
  
   (public member function)
  
   get extracts characters
  
   (public member function)
  
   extracts characters until the given character is
  
   getline found
  
   (public member function)
  
   from_chars converts a character sequence to an integer or
  
   (C++17) floating-point value
  
   (function)
| 2024.06.10 | http://cppreference.com |