std::ostrstream:: freeze
|
void
freeze
(
bool
flag
=
true
)
;
|
(obsolète en C++98)
(supprimé en C++26) |
|
Si le flux utilise un tableau alloué dynamiquement pour la sortie, désactive ( flag == true ) ou active ( flag == false ) l'allocation/désallocation automatique du tampon. Appelle effectivement rdbuf ( ) - > freeze ( flag ) .
Table des matières |
Notes
Après un appel à str() , les flux dynamiques deviennent automatiquement gelés. Un appel à freeze ( false ) est requis avant de quitter la portée dans laquelle cet objet ostrstream a été créé, sinon le destructeur provoquera une fuite de mémoire. De plus, toute sortie supplémentaire vers un flux gelé peut être tronquée une fois qu'elle atteint la fin du tampon alloué.
Paramètres
| flag | - | statut souhaité |
Valeur de retour
(aucun)
Exemple
#include <iostream> #include <strstream> int main() { std::ostrstream dyn; // tampon de sortie alloué dynamiquement dyn << "Test: " << 1.23; // note: pas de std::ends pour démontrer l'ajout std::cout << "The output stream contains \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; // le flux est maintenant gelé à cause de str() dyn << " More text"; // la sortie vers un flux gelé peut être tronquée std::cout << "The output stream contains \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; dyn.freeze(false); // freeze(false) doit être appelé ou le destructeur provoquera une fuite std::ostrstream dyn2; // tampon de sortie alloué dynamiquement dyn2 << "Test: " << 1.23; // note: pas de std::ends std::cout << "The output stream contains \""; std::cout.write(dyn2.str(), dyn2.pcount()) << "\"\n"; dyn2.freeze(false); // dégeler le flux après str() dyn2 << " More text" << std::ends; // la sortie ne sera pas tronquée (le tampon s'agrandit) std::cout << "The output stream contains \"" << dyn2.str() << "\"\n"; dyn2.freeze(false); // freeze(false) doit être appelé ou le destructeur provoquera une fuite }
Sortie possible :
The output stream contains "Test: 1.23" The output stream contains "Test: 1.23 More " The output stream contains "Test: 1.23" The output stream contains "Test: 1.23 More text"
Voir aussi
|
définit/efface l'état gelé du tampon
(fonction membre publique de
std::strstreambuf
)
|