operator<< (std::basic_ostream)
|
Definiert in Header
<ostream>
|
||
|
basic_ostream und Zeichen
|
||
| (1) | ||
|
template
<
class
CharT,
class
Traits
>
basic_ostream
<
CharT, Traits
>
&
|
||
|
template
<
class
CharT,
class
Traits
>
basic_ostream
<
CharT, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
basic_ostream und Zeichen-Array
|
||
| (2) | ||
|
template
<
class
CharT,
class
Traits
>
basic_ostream
<
CharT, Traits
>
&
|
||
|
template
<
class
CharT,
class
Traits
>
basic_ostream
<
CharT, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
basic_ostream Rvalue
|
||
|
template
<
class
Ostream,
class
T
>
Ostream && operator << ( Ostream && os, const T & value ) ; |
(3) | (seit C++11) |
|
gelöschte Überladungen für basic_ostream und UTF-Zeichen/Array
|
||
| (4) | (seit C++20) | |
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
Fügt ein Zeichen oder eine Zeichenkette ein.
- Wenn os. width ( ) > 1 , dann werden os. width ( ) - 1 Kopien von os. fill ( ) zur Ausgabecharakterfolge hinzugefügt.
- Wenn ( out. flags ( ) & std:: ios_base :: adjustfield ) == std:: ios_base :: left , werden die Füllzeichen nach dem Ausgabecharakter platziert, andernfalls davor.
-
Für die erste und dritte Überladung (wobei
CharTdem Typ von ch entspricht), werden exakt traits :: length ( s ) Zeichen eingefügt. - Für die zweite Überladung werden exakt std:: char_traits < char > :: length ( s ) Zeichen eingefügt.
- Für die letzten beiden Überladungen werden exakt traits :: length ( reinterpret_cast < const char * > ( s ) ) Zeichen eingefügt.
- Wenn die Anzahl der einzufügenden Zeichen kleiner ist als os. width ( ) , werden genügend Kopien von os. fill ( ) zur Zeichensequenz hinzugefügt, um deren Länge gleich os. width ( ) zu machen.
- Wenn ( out. flags ( ) & std:: ios_base :: adjustfield ) == std:: ios_base :: left , werden die Füllzeichen am Ende der Ausgabesequenz hinzugefügt, andernfalls werden sie vor der Ausgabesequenz hinzugefügt.
Ostream
ein Klassentyp ist, der öffentlich und eindeutig von
std::ios_base
abgeleitet ist.
Inhaltsverzeichnis |
Parameter
| os | - | Ausgabestream, in den Daten eingefügt werden |
| ch | - | Referenz auf ein einzufügendes Zeichen |
| s | - | Zeiger auf eine einzufügende Zeichenkette |
Rückgabewert
Hinweise
Vor LWG Issue 1203 konnte Code wie ( std:: ostringstream ( ) << 1.2 ) . str ( ) nicht kompiliert werden.
Beispiel
#include <fstream> #include <iostream> void foo() { // Fehler: operator<< (basic_ostream<char, _Traits>&, char8_t) ist gelöscht // std::cout << u8'z' << '\n'; } std::ostream& operator<<(std::ostream& os, char8_t const& ch) { return os << static_cast<char>(ch); } int main() { std::cout << "Hello, world" // verwendet `const char*` Überladung << '\n'; // verwendet `char` Überladung std::ofstream{"test.txt"} << 1.2; // verwendet Rvalue-Überladung std::cout << u8'!' << '\n'; // verwendet programmdefinierten operator<<(os, char8_t const&) }
Ausgabe:
Hello, world !
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 167 | C++98 |
die Anzahl der eingefügten Zeichen für alle
Überladungen in (2) war traits :: length ( s ) |
aktualisierte die Zahlen für die Überladungen
bei denen
CharT
nicht mit dem Typ von
ch
übereinstimmt
|
| LWG 1203 | C++11 |
Überladung für Rvalue-Stream gab
Lvalue-Referenz auf die Basisklasse zurück |
gibt Rvalue-Referenz
auf die abgeleitete Klasse zurück |
| LWG 2011 | C++98 | Auffüllen wurde bestimmt durch std::num_put::do_put() | bestimmt durch den Operator selbst |
| LWG 2534 | C++11 | Überladung für Rvalue-Stream war nicht eingeschränkt | eingeschränkt |
Siehe auch
|
formatiert Daten ein
(öffentliche Elementfunktion) |
|
|
(C++23)
|
gibt
formatierte
Darstellung der Argumente aus
(Funktions-Template) |
|
erweitert Zeichen
(öffentliche Elementfunktion von
std::basic_ios<CharT,Traits>
)
|