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 Zeichenarray |
||
| (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/Arrays |
||
| (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 ist, werden os.width() - 1 Kopien von os.fill() zum Ausgabebuchstaben hinzugefügt, um die Ausgabebuchstabenfolge zu bilden.
- Wenn (out.flags() & std::ios_base::adjustfield) == std::ios_base::left ist, werden die Füllzeichen nach dem Ausgabebuchstaben platziert, andernfalls davor.
- Für die erste und dritte Überladung (bei der
CharTdem Typ von ch entspricht) werden genau traits::length(s) Zeichen eingefügt. - Für die zweite Überladung werden genau std::char_traits<char>::length(s) Zeichen eingefügt.
- Für die letzten beiden Überladungen werden genau traits::length(reinterpret_cast<const char*>(s)) Zeichen eingefügt.
- Wenn die Anzahl der einzufügenden Zeichen kleiner ist als os.width(), dann werden genügend Kopien von os.fill() zur Zeichensequenz hinzugefügt, um ihre Länge auf os.width() zu bringen.
- Wenn (out.flags() & std::ios_base::adjustfield) == std::ios_base::left ist, 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.Inhalt |
[edit] Parameter
| os | - | Ausgabestrom, in den Daten eingefügt werden sollen |
| ch | - | Referenz auf ein einzufügendes Zeichen |
| s | - | Zeiger auf eine einzufügende Zeichenkette |
[edit] Rückgabewert
[edit] Hinweise
Vor LWG Issue 1203 kompilierte Code wie (std::ostringstream() << 1.2).str() nicht.
[edit] Beispiel
#include <fstream> #include <iostream> void foo() { // error: operator<< (basic_ostream<char, _Traits>&, char8_t) is deleted // 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" // uses `const char*` overload << '\n'; // uses `char` overload std::ofstream{"test.txt"} << 1.2; // uses rvalue overload std::cout << u8'!' << '\n'; // uses program-defined operator<<(os, char8_t const&) }
Ausgabe
Hello, world !
[edit] Defect Reports
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 167 | C++98 | die Anzahl der für alle eingefügten Zeichen Überladungen in (2) war traits::length(s) |
aktualisierte die Nummern für die Überladungen bei denen CharT nicht dem Typ von ch entspricht |
| LWG 1203 | C++11 | Überladung für Rvalue-Stream wurde zurückgegeben Lvalue-Referenz auf die Basisklasse |
gibt Rvalue-Referenz zurück auf die abgeleitete Klasse |
| LWG 2011 | C++98 | Auffüllung wurde durch std::num_put::do_put() bestimmt | vom Operator selbst bestimmt |
| LWG 2534 | C++11 | Überladung für Rvalue-Stream war nicht eingeschränkt | eingeschränkt |
[edit] Siehe auch
| fügt formatierte Daten ein (public member function) | |
| (C++23) |
gibt die formatierten Darstellung der Argumente aus (Funktionstemplate) |
| erweitert Zeichen (public member function of std::basic_ios<CharT,Traits>) |