std::basic_ostream<CharT,Traits>::operator<< (3) - Linux Manuals

std::basic_ostream<CharT,Traits>::operator<<: std::basic_ostream<CharT,Traits>::operator<<

NAME

std::basic_ostream<CharT,Traits>::operator<< - std::basic_ostream<CharT,Traits>::operator<<

Synopsis


basic_ostream& operator<<( short value ); (1)
basic_ostream& operator<<( unsigned short value );
basic_ostream& operator<<( int value ); (2)
basic_ostream& operator<<( unsigned int value );
basic_ostream& operator<<( long value ); (3)
basic_ostream& operator<<( unsigned long value );
basic_ostream& operator<<( long long value ); (4) (since C++11)
basic_ostream& operator<<( unsigned long long value );
basic_ostream& operator<<( float value );
basic_ostream& operator<<( double value ); (5)
basic_ostream& operator<<( long double value );
basic_ostream& operator<<( bool value ); (6)
basic_ostream& operator<<( const void* value ); (7)
basic_ostream& operator<<( std::nullptr_t ); (8) (since C++17)
basic_ostream& operator<<( std::basic_streambuf<CharT, Traits>* sb); (9)
basic_ostream& operator<<( (10)
std::ios_base& (*func)(std::ios_base&) );
basic_ostream& operator<<( (11)
std::basic_ios<CharT,Traits>& (*func)(std::basic_ios<CharT,Traits>&) );
basic_ostream& operator<<( (12)
std::basic_ostream<CharT,Traits>& (*func)(std::basic_ostream<CharT,Traits>&) );


Inserts data into the stream.
1-2) Behaves as a FormattedOutputFunction. After constructing and checking the sentry object, if value is short or int, then casts it to unsigned short or unsigned int if ios_base::flags() & ios_base::basefield is ios_base::oct or ios_base::hex. After that, casts to long in any case and outputs as in (3). If value is unsigned short or unsigned int, casts to unsigned long and outputs as in (3).
3-7) Behaves as a FormattedOutputFunction. After constructing and checking the sentry object, inserts an integer, floating point, boolean or generic pointer value by calling num_put::put(). If the end of file condition was encountered during output (put().failed() == true), sets ios::badbit.
8) Outputs an implementation-defined string as if by *this << s, where s is a null-terminated character type string.
9) Behaves as an UnformattedOutputFunction. After constructing and checking the sentry object, checks if sb is a null pointer. If it is, executes setstate(badbit) and exits. Otherwise, extracts characters from the input sequence controlled by sb and inserts them into *this until 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).


If no characters were inserted, executes setstate(failbit). If an exception was thrown while extracting, sets failbit and, if failbit is set in exceptions(), rethrows the exception.
10-12) Calls func(*this). These overloads are used to implement output I/O manipulators such as std::endl.

Parameters


value - integer, floating-point, boolean, or pointer value to insert
func - function to call
sb - pointer to the streambuffer to read the data from

Return value


1-11) *this
12) func(*this)

Notes


There are no overload for pointers to non-static member, pointers to volatile, or function pointers (other than the ones with signatures accepted by the (10-12) overloads). Attempting to output such objects invokes implicit conversion to bool, and, for any non-null pointer value, the value 1 is printed (unless boolalpha was set, in which case true is printed).
Character and character string arguments (e.g., of type char or const char*) are handled by the non-member_overloads of operator<<. Attempting to output a character using the member function call syntax (e.g., std::cout.operator<<('c');) will call one of overloads (2-4) and output the numerical value. Attempting to output a character string using the member function call syntax will call overload (7) and print the pointer value instead.

Example


// Run this code


  #include <iostream>
  #include <iomanip>
  #include <sstream>
  int main()
  {
      std::istringstream input(" \"Some text.\" ");
      volatile int n = 42;
      double f = 3.14;
      bool b = true;
      std::cout << n // int overload
                << ' ' // non-member overload
                << std::boolalpha << b // bool overload
                << " " // non-member overload
                << std::fixed << f // double overload
                << input.rdbuf() // streambuf overload
                << &n // bool overload: volatile int* doesn't convert to const void*
                << std::endl; // function overload
  }

Output:


  42 true 3.140000 "Some text." true

See also


                               inserts character data
operator<<(std::basic_ostream) (function template)
                               performs stream I/O of strings
operator<< (function template)
operator>>
                               performs stream input and output of bitsets
operator<< (function)
operator>>
                               serializes and deserializes a complex number
operator<< (function template)
operator>>
                               performs stream input and output on pseudo-random number engine
operator<< (function template)
operator>>
                               performs stream input and output on pseudo-random number distribution
operator<< (function template)
operator>>
                               inserts a character
put (public member function)
                               inserts blocks of characters
write (public member function)


to_chars converts an integer or floating-point value to a character sequence
                               (function)
(C++17)