std::basic_istream<CharT,Traits>:: basic_istream
|
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