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) (depuis C++11)
protected :
basic_istream ( basic_istream && rhs ) ;
(3) (depuis C++11)

1) Construit l'objet basic_istream , en attribuant des valeurs initiales à la classe de base en appelant basic_ios :: init ( sb ) . La valeur de gcount() est initialisée à zéro.

2) Le constructeur de copie est protégé, et est supprimé. Les flux d'entrée ne sont pas copiables.

3) Le constructeur de déplacement copie la valeur de gcount() depuis rhs , définit la valeur de gcount() de rhs à zéro, et utilise basic_ios < CharT, Traits > :: move ( rhs ) pour déplacer tous les membres de basic_ios, à l'exception du rdbuf() , depuis rhs vers * this . Ce constructeur de déplacement est protégé : il est appelé par les constructeurs de déplacement des classes de flux d'entrée déplaçables std::basic_ifstream et std::basic_istringstream , qui savent comment déplacer correctement le tampon de flux associé.

Paramètres

sb - tampon de flux à utiliser comme périphérique sous-jacent

Exemple

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream s1("hello");
    std::istream s2(s1.rdbuf()); // OK : s2 partage le tampon avec s1
//  std::istream s3(std::istringstream("test")); // ERREUR : le constructeur de déplacement est protégé
//  std::istream s4(s2);                         // ERREUR : le constructeur de copie est supprimé
    std::istringstream s5(std::istringstream("world")); // OK : constructeur de déplacement appelé
                                                        //     par la classe dérivée
    std::cout << s2.rdbuf() << ' ' << s5.rdbuf() << '\n';
}

Sortie :

hello world