std::basic_ostream<CharT,Traits>:: basic_ostream
From cppreference.net
<
cpp
|
io
|
basic ostream
|
explicit
basic_ostream
(
std::
basic_streambuf
<
CharT, Traits
>
*
sb
)
;
|
(1) | |
|
protected
:
basic_ostream ( const basic_ostream & rhs ) = delete ; |
(2) | (depuis C++11) |
|
protected
:
basic_ostream ( basic_ostream && rhs ) ; |
(3) | (depuis C++11) |
1)
Construit l'objet
basic_ostream
, en attribuant des valeurs initiales à la classe de base en appelant
basic_ios::init(sb)
.
2)
Le constructeur de copie est protégé et est supprimé. Les flux de sortie ne sont pas copiables.
3)
Le constructeur de déplacement utilise
basic_ios
<
CharT, Traits
>
::
move
(
rhs
)
pour déplacer tous les membres
basic_ios
, à l'exception de
rdbuf()
, de
rhs
vers
*
this
. Ce constructeur de déplacement est protégé : il est appelé par les constructeurs de déplacement des classes de flux de sortie déplaçables
std::basic_ofstream
et
std::basic_ostringstream
, qui savent comment déplacer correctement le tampon de flux associé.
Paramètres
| sb | - | tampon de flux à utiliser comme séquence de sortie |
| rhs | - | basic_ostream à partir duquel initialiser |
Notes
Parce que
basic_ios::init(sb)
positionne le
badbit
lorsque
sb
est un pointeur nul, et parce que
basic_ostream::sentry
ne fait rien si le flux est déjà dans un état d'erreur, écrire dans un flux construit à partir d'un pointeur nul
sb
est une opération sans effet.
Exemple
Exécuter ce code
#include <iostream> #include <sstream> #include <utility> int main() { // ERREUR : le constructeur de copie est supprimé // std::ostream myout(std::cout); // OK : partage le tampon avec cout std::ostream myout(std::cout.rdbuf()); // ERREUR : le constructeur de déplacement est protégé // std::ostream s2(std::move(std::ostringstream() << 7.1)); // OK : constructeur de déplacement appelé via la classe dérivée std::ostringstream s2(std::ostringstream() << 7.1); myout << s2.str() << '\n'; std::ostream dev_null{nullptr}; // voir Notes ci-dessus dev_null << "no-op"; }
Sortie :
7.1