Namespaces
Variants
Views
Actions

operator<<(std::basic_ostream)

From cppreference.com
template< class CharT, class Traits>

basic_ostream<CharT,Traits>& operator<<( basic_ostream<CharT,Traits>& os,
                                         CharT ch );
template< class CharT, class Traits>
basic_ostream<CharT,Traits>& operator<<( basic_ostream<CharT,Traits>& os,
                                         char ch );
template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,
                                        char ch );
template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,
                                        signed char ch );
template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

                                        unsigned char ch );
(1)
template< class CharT, class Traits >

basic_ostream<CharT,Traits>& operator<<( basic_ostream<CharT,Traits>& os,
                                         const CharT* s );
template< class CharT, class Traits >
basic_ostream<CharT,Traits>& operator<<( basic_ostream<CharT,Traits>& os,
                                         const char* s );
template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,  
                                        const char* s );
template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,
                                        const signed char* s );
template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,traits>& os,

                                        const unsigned char* s );
(2)
template< class CharT, class Traits, class T >

basic_ostream< charT, traits >& operator<<( basic_ostream<CharT,Traits>&& os,

                                            const T& value );
(3) (since C++11)

Inserts a character or a character string.

1-2) are formatted output functions: they begin execution by constructing an object of type sentry, which flushes the tie()'d output buffers if necessary and checks the stream errors. After construction, if the sentry object returns false, these functions return without attempting any output. If an error occurs during output, these functions call setstate(ios_base::failbit). If an exception is thrown during output, then ios::badbit is set (the exception is suppressed unless exceptions()&badbit) != 0, in which case it is rethrown)

1) Inserts a character ch. If the type of the character is not CharT, it is first converted with os.widen(ch). Padding is determined as if by Stage 3 of num_put::put(). After insertion, width(0) is called.

2) Inserts successive characters from the character array whose first element is pointed to by s.

  • for the first and third overloads (where CharT matches the type of ch), exactly traits::length(s) characters are inserted.
  • for the second overload, exactly std::char_traits<char>::length(s) characters are inserted.
  • for the last two overloads, exactly traits::length(reinterpret_cast<const char*>(s)) are inserted.

Padding is determined as if by Stage 3 of num_put::put(). All characters are widened using os.widen() before insertion. After insertion, width(0) is called.

3) Calls the appropriate insertion operator, given an rvalue reference to an output stream object (equivalent to os << value).

Contents

[edit] Parameters

os - output stream to insert data to
ch - reference to a character to insert
s - pointer to a character string to insert

[edit] Return value

st

[edit] Example

#include <iostream>
#include <sstream>
int main()
{
    std::cout << "Hello, world" // the const char* overlaod
              << '\n';          // the char overload
    std::string s = (std::ostringstream() << 1.2).str(); // rvalue overload
    std::cout << s << '\n';
}

Output:

Hello, world
1.2

[edit] See also

inserts formatted data
(public member function) [edit]