Namespaces
Variants

std::basic_ostream<CharT,Traits>:: basic_ostream

From cppreference.net
explicit basic_ostream ( std:: basic_streambuf < CharT, Traits > * sb ) ;
(1)
protected :
basic_ostream ( const basic_ostream & rhs ) = delete ;
(2) (seit C++11)
protected :
basic_ostream ( basic_ostream && rhs ) ;
(3) (seit C++11)
1) Konstruiert das basic_ostream -Objekt, weist den Basisklassen initiale Werte zu durch Aufruf von basic_ios::init(sb) .
2) Der Kopierkonstruktor ist geschützt und gelöscht. Ausgabestreams sind nicht kopierbar.
3) Der Move-Konstruktor verwendet basic_ios < CharT, Traits > :: move ( rhs ) um alle basic_ios -Member, außer rdbuf() , von rhs nach * this zu verschieben. Dieser Move-Konstruktor ist geschützt: Er wird von den Move-Konstruktoren der beweglichen Ausgabestromklassen std::basic_ofstream und std::basic_ostringstream aufgerufen, die wissen, wie der zugehörige Streambuffer korrekt verschoben wird.

Parameter

sb - Streambuffer, der als Ausgabesequenz verwendet wird
rhs - basic_ostream, von dem initialisiert wird

Hinweise

Weil basic_ios::init(sb) das badbit setzt, wenn sb ein Nullzeiger ist, und weil basic_ostream::sentry nichts tut, wenn der Stream sich bereits in einem Fehlerzustand befindet, ist das Schreiben in einen Stream, der von einem Nullzeiger sb konstruiert wurde, eine No-Op.

Beispiel

#include <iostream>
#include <sstream>
#include <utility>
int main()
{
    // FEHLER: Copy-Konstruktor ist gelöscht
//  std::ostream myout(std::cout);
    // OK: Teilt Puffer mit cout
    std::ostream myout(std::cout.rdbuf());
    // FEHLER: Move-Konstruktor ist geschützt
//  std::ostream s2(std::move(std::ostringstream() << 7.1));
    // OK: Move-Konstruktor wird über die abgeleitete Klasse aufgerufen
    std::ostringstream s2(std::ostringstream() << 7.1);
    myout << s2.str() << '\n';
    std::ostream dev_null{nullptr}; // siehe Hinweise oben
    dev_null << "no-op";
}

Ausgabe:

7.1