std::basic_ostream<CharT,Traits>:: operator<<
|
basic_ostream
&
operator
<<
(
bool
value
)
;
|
(1) | |
|
basic_ostream
&
operator
<<
(
long
value
)
;
|
(2) | |
|
basic_ostream
&
operator
<<
(
unsigned
long
value
)
;
|
(3) | |
|
basic_ostream
&
operator
<<
(
long
long
value
)
;
|
(4) | (seit C++11) |
|
basic_ostream
&
operator
<<
(
unsigned
long
long
value
)
;
|
(5) | (seit C++11) |
|
basic_ostream
&
operator
<<
(
double
value
)
;
|
(6) | |
|
basic_ostream
&
operator
<<
(
long
double
value
)
;
|
(7) | |
|
basic_ostream
&
operator
<<
(
const
void
*
value
)
;
|
(8) | |
|
basic_ostream
&
operator
<<
(
const
volatile
void
*
value
)
;
|
(9) | (seit C++23) |
|
basic_ostream
&
operator
<<
(
std::
nullptr_t
)
;
|
(10) | (seit C++17) |
|
basic_ostream
&
operator
<<
(
short
value
)
;
|
(11) | |
|
basic_ostream
&
operator
<<
(
int
value
)
;
|
(12) | |
|
basic_ostream
&
operator
<<
(
unsigned
short
value
)
;
|
(13) | |
|
basic_ostream
&
operator
<<
(
unsigned
int
value
)
;
|
(14) | |
|
basic_ostream
&
operator
<<
(
float
value
)
;
|
(15) | |
|
basic_ostream
&
operator
<<
(
/* extended-floating-point-type */
value
)
;
|
(16) | (seit C++23) |
|
basic_ostream
&
operator
<<
(
std::
basic_streambuf
<
CharT, Traits
>
*
sb
)
;
|
(17) | |
|
basic_ostream
&
operator
<<
(
std:: ios_base & ( * func ) ( std:: ios_base & ) ) ; |
(18) | |
|
basic_ostream
&
operator
<<
(
std:: basic_ios < CharT, Traits > & ( * func ) ( std:: basic_ios < CharT, Traits > & ) ) ; |
(19) | |
|
basic_ostream
&
operator
<<
(
std::
basic_ostream
<
CharT, Traits
>
&
(
*
func
)
|
(20) | |
Fügt Daten in den Stream ein.
badbit
gesetzt.
- static_cast < long > ( static_cast < unsigned short > ( value ) ) , falls flags ( ) & std:: ios_base :: basefield gleich std::ios_base::oct oder std::ios_base::hex ist, oder
- static_cast < long > ( value ) andernfalls.
- static_cast < long > ( static_cast < unsigned int > ( value ) ) , falls flags ( ) & std:: ios_base :: basefield gleich std::ios_base::oct oder std::ios_base::hex ist, oder
- static_cast < long > ( value ) andernfalls.
- Wenn der Rang kleiner oder gleich dem von double ist, wird static_cast < double > ( value ) wie in (6) eingefügt.
- Andernfalls, wenn der Rang kleiner oder gleich dem von long double ist, wird static_cast < long double > ( value ) wie in (7) eingefügt.
- Andernfalls ist ein Aufruf dieser Überladung bedingt unterstützt mit implementierungsdefinierter Semantik.
-
- Ende-der-Datei in der Eingabesequenz auftritt;
- das Einfügen in die Ausgabesequenz fehlschlägt (wobei das einzufügende Zeichen nicht extrahiert wird);
- eine Exception auftritt (wobei die Exception abgefangen wird).
failbit
gesetzt und, falls
failbit
in
exceptions()
gesetzt ist, die Exception erneut ausgelöst.
Inhaltsverzeichnis |
Parameter
| value | - | einzufügender Integer-, Gleitkomma-, Boolean- oder Zeigerwert |
| func | - | aufzurufende Funktion |
| sb | - | Zeiger auf den Streampuffer, von dem die Daten gelesen werden |
Rückgabewert
Hinweise
Es gibt keine Überladungen für Zeiger auf nicht-statische Member , Zeiger auf volatile-Objekte, (bis C++23) oder Funktionszeiger (außer denen mit Signaturen, die von den ( 18-20 ) Überladungen akzeptiert werden).
-
Der Versuch, solche Objekte auszugeben, ruft eine implizite Konvertierung zu
bool
auf, und für jeden nicht-null Zeigerwert wird der Wert
1
ausgegeben (sofern nicht
boolalphagesetzt wurde, in welchem Fall true ausgegeben wird).
Zeichen- und Zeichenkettenargumente (z.B. vom Typ char oder const char * ) werden durch die Nicht-Member-Überladungen von operator << behandelt.
- Der Versuch, ein Zeichen mit der Memberfunktionsaufrufsyntax (z.B., std:: cout . operator << ( 'c' ) ; ) auszugeben, wird eine der Überladungen in ( 2-5 ) oder ( 11-14 ) aufrufen und den numerischen Wert ausgeben.
- Der Versuch, eine Zeichenkette mit der Memberfunktionsaufrufsyntax auszugeben, wird Überladung (8) aufrufen und stattdessen den Zeigerwert ausgeben.
Overload (10) wurde durch die Resolution von LWG-Issue 2221 hinzugefügt, wird jedoch in keiner Standardbibliothek-Implementierung unter C++11/14-Modi implementiert.
Beispiel
#include <iomanip> #include <iostream> #include <sstream> int fun() { return 42; } int main() { std::istringstream input(" \"Some text.\" "); double f = 3.14; bool b = true; std::cout << fun() // int Überladung (12) << ' ' // Nicht-Member-Überladung << std::boolalpha // Funktionsüberladung (18) << b // bool Überladung (1) << " " // Nicht-Member-Überladung << std::fixed // Funktionsüberladung (18) erneut << f // double Überladung (6) << input.rdbuf() // streambuf Überladung << fun // bool Überladung (1): Es gibt keine Überladung für int(*)() << std::endl; // Funktionsüberladung (18) erneut int x = 0; int* p1 = &x; volatile int* p2 = &x; std::cout << "p1: " << p1 << '\n' // `const void*` Überladung, gibt Adresse aus << "p2: " << p2 << '\n'; // Vor C++23 (P1147): bool Überladung :), weil // operator<<(const void*) keine Übereinstimmung ist, da es den `volatile` // Qualifizierer verwirft. Um dies zu beheben, fügt C++23 `const volatile void*` Überladung (9) hinzu, // die wie erwartet die Adresse ausgibt. }
Mögliche Ausgabe:
42 true 3.140000 "Some text." true p1: 0x7ffcea766600 p2: 0x7ffcea766600
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 117 | C++98 |
Überladungen
(1-8,11-15)
delegierten die Ausgabe an
num_put::put , aber es gibt keine Überladungen für short , unsigned short , int , unsigned int , und float |
sie werden konvertiert
bevor sie an
num_put::put
übergeben werden
|
| LWG 567 | C++98 |
Überladung
(17)
verhielt sich wie eine
FormattedOutputFunction
aufgrund der Lösung von LWG Issue 60 |
sie verhält sich wie eine
UnformattedOutputFunction |
Siehe auch
|
Fügt Zeichendaten ein oder fügt in Rvalue-Stream ein
(Funktionsschablone) |
|
|
führt Stream-Eingabe und -Ausgabe für Zeichenketten durch
(Funktionsschablone) |
|
|
(C++17)
|
führt Stream-Ausgabe für String-Views durch
(Funktionsschablone) |
|
führt Stream-Eingabe und -Ausgabe für Bitsets durch
(Funktionsschablone) |
|
|
serialisiert und deserialisiert eine komplexe Zahl
(Funktionsschablone) |
|
|
(C++11)
|
führt Stream-Eingabe und -Ausgabe für Pseudozufallszahlengeneratoren durch
(Funktionsschablone) |
|
(C++11)
|
führt Stream-Eingabe und -Ausgabe für Pseudozufallszahlenverteilungen durch
(Funktionsschablone) |
|
fügt ein Zeichen ein
(öffentliche Elementfunktion) |
|
|
fügt Zeichenblöcke ein
(öffentliche Elementfunktion) |
|
|
(C++17)
|
konvertiert einen Integer- oder Fließkommawert in eine Zeichenfolge
(Funktion) |