Namespaces
Variants

std::strstream:: freeze

From cppreference.net

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. Effectue effectivement l'appel 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 strstream 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::strstream 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é suite à 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::strstream 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 )