Namespaces
Variants

std::basic_istream<CharT,Traits>:: basic_istream

From cppreference.net
explicit basic_istream ( std:: basic_streambuf < CharT, Traits > * sb ) ;
(1)
protected :
basic_istream ( const basic_istream & rhs ) = delete ;
(2) (seit C++11)
protected :
basic_istream ( basic_istream && rhs ) ;
(3) (seit C++11)

1) Konstruiert das basic_istream -Objekt, weist den Basisklassen initiale Werte zu durch Aufruf von basic_ios :: init ( sb ) . Der Wert von gcount() wird mit Null initialisiert.

2) Der Kopierkonstruktor ist geschützt und als gelöscht markiert. Eingabeströme sind nicht kopierbar.

3) Der Move-Konstruktor kopiert den Wert von gcount() aus rhs , setzt den gcount()-Wert von rhs auf null und verwendet basic_ios < CharT, Traits > :: move ( rhs ) , um alle basic_ios-Member außer rdbuf() aus rhs in * this zu verschieben. Dieser Move-Konstruktor ist geschützt: Er wird von den Move-Konstruktoren der beweglichen Eingabestromklassen std::basic_ifstream und std::basic_istringstream aufgerufen, die wissen, wie der zugehörige Streampuffer korrekt verschoben wird.

Parameter

sb - Streambuffer, der als zugrunde liegendes Gerät verwendet wird

Beispiel

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream s1("hello");
    std::istream s2(s1.rdbuf()); // OK: s2 teilt sich den Puffer mit s1
//  std::istream s3(std::istringstream("test")); // FEHLER: Move-Konstruktor ist geschützt
//  std::istream s4(s2);                         // FEHLER: Kopierkonstruktor ist gelöscht
    std::istringstream s5(std::istringstream("world")); // OK: Move-Konstruktor wird aufgerufen
                                                        //     durch abgeleitete Klasse
    std::cout << s2.rdbuf() << ' ' << s5.rdbuf() << '\n';
}

Ausgabe:

hello world