< cpp‎ | io‎ | basic ostream
C++Ostream
Language
Standard Library Headers
Freestanding and hosted implementations
Named requirements
Language support library
Concepts library(C++20)
Diagnostics library
Utilities library
Strings library
Containers library
Iterators library
Ranges library(C++20)
Algorithms library
Numerics library
Localizations library
Input/output library
Filesystem library(C++17)
Regular expressions library(C++11)
Atomic operations library(C++11)
Thread support library(C++11)
Technical Specifications

This information provides a quick reference for the IBM-supplied BPXBATCH program. BPXBATCH makes it easy for you to run shell scripts and z/OS® XL C/C executable files that reside in z/OS UNIX. An Ostream is an abstract base class for all output systems (streams, files, token lists.

Input/output library
I/O manipulators
C-style I/O
Buffers
(deprecated in C++98)
(C++20)
Streams
Abstractions
File I/O
String I/O
Array I/O
(deprecated in C++98)
(deprecated in C++98)
(deprecated in C++98)
Synchronized Output
(C++20)
Types
Error category interface
(C++11)
(C++11)
Ostreamstd::basic_ostream
Global objects
Member functions
(C++11)
Formatted output
Unformatted output
Positioning
Miscellaneous
(C++11)
Member classes
Non-member functions
Defined in header <ostream>
(1)
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,

signedchar ch );
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

unsignedchar ch );
(2)
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,

constchar* s );
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

constchar* s );
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

constsignedchar* s );
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

constunsignedchar* s );
template<class Ostream, class T >

Ostream&& operator<<( Ostream&& os,

const T& value );
(3) (since C++11)
deleted overloads for basic_ostream and UTF character/array
(4)(since C++20)
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

wchar_t ch )= delete;
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

char8_t ch )= delete;
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

char16_t ch )= delete;
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

char32_t ch )= delete;
template<class Traits >

basic_ostream<wchar_t,Traits>& operator<<( basic_ostream<wchar_t,Traits>& os,

char8_t ch )= delete;
template<class Traits >

basic_ostream<wchar_t,Traits>& operator<<( basic_ostream<wchar_t,Traits>& os,

char16_t ch )= delete;
template<class Traits >

basic_ostream<wchar_t,Traits>& operator<<( basic_ostream<wchar_t,Traits>& os,

char32_t ch )= delete;
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

constwchar_t* ch )= delete;
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

const char8_t* ch )= delete;
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

constchar16_t* ch )= delete;
template<class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

constchar32_t* ch )= delete;
template<class Traits >

basic_ostream<wchar_t,Traits>& operator<<( basic_ostream<wchar_t,Traits>& os,

const char8_t* ch )= delete;
template<class Traits >

basic_ostream<wchar_t,Traits>& operator<<( basic_ostream<wchar_t,Traits>& os,

constchar16_t* ch )= delete;
template<class Traits >

basic_ostream<wchar_t,Traits>& operator<<( basic_ostream<wchar_t,Traits>& os,

constchar32_t* ch )= delete;

C 2b 2b Ostream Dev Null Key

Inserts a character or a character string.

1) Behaves as an FormattedOutputFunction. After constructing and checking the sentry object, inserts the character ch. If the type of the character is not CharT, it is first converted with os.widen(ch). Padding is determined as follows: if os.width()>1, then os.width()-1 copies of os.fill() are added to the output character to form the output character sequence.If (out.flags()&std::ios_base::adjustfield)std::ios_base::left, the fill characters are placed after the output character, otherwise before. After insertion, os.width(0) is called to cancel the effects of std::setw, if any.
2) Behaves as an Null

C 2b 2b Ostream Dev Null Code

FormattedOutputFunction. After constructing and checking the sentry object, 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<constchar*>(s)) are inserted.

Before insertion, first, all characters are widened using os.widen(), then padding is determined as follows: if the number of characters to insert is less than os.width(), then enough copies of os.fill() are added to the character sequence to make its length equal os.width(). If (out.flags()&std::ios_base::adjustfield)std::ios_base::left, the fill characters are added at the end of the output sequence, otherwise they are added before the output sequence.After insertion, width(0) is called to cancel the effects of std::setw, if any.

The behavior is undefined if s is a null pointer.
3) Calls the appropriate insertion operator, given an rvalue reference to an output stream object (equivalent to os << value). This overload participates in overload resolution only if the expression os << value is well-formed and Ostream is a class type publicly and unambiguously derived from std::ios_base.
4) Overloads that accept char16_t, char32_t etc (or null terminated sequence thereof) are deleted: std::cout<< u'X' is not allowed. Previously, these would print an integer or pointer value.

[edit]Parameters

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

C 2b 2b Ostream Dev Null Test

[edit]Return value

1-2)os

[edit]Notes

C%2b%2b Ostream Dev Null

Before LWG#1203, code such as (std::ostringstream()<<1.2).str() does not compile.

C 2b 2b Ostream Dev Null Command

[edit]Example

Output:

[edit]Defect reports

Null

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 1203 C++11 overload for rvalue stream returned lvalue reference to the base class returns rvalue reference to the derived class
LWG 2534 C++11 overload for rvalue stream was not constrained constrained

[edit]See also

inserts formatted data
(public member function)[edit]
widens characters
(public member function of std::basic_ios<CharT,Traits>)[edit]
Retrieved from 'https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_ostream/operator_ltlt2&oldid=116601'