Partager via


strstreambuf::freeze

Rend une mémoire tampon du flux pas disponible via des opérations de mémoire tampon du flux.

void freeze( 
   bool _Freezeit = true 
);

Paramètres

  • _Freezeit
    bool qui indique si vous souhaitez que le flux de données à figer.

Notes

Si _Freezeit est true, la fonction modifie le mode d'strstreambuf stockées pour effectuer la séquence contrôlée gelée. Sinon, il a la séquence non contrôlée gelée.

str implique freeze.

Notes

Une mémoire tampon gelée n'est pas libérée lors de la destruction d'strstreambuf.Vous devez libérer la mémoire tampon avant qu'elle soit diffusée pour éviter une fuite de mémoire.

Exemple

// strstreambuf_freeze.cpp
// compile with: /EHsc

#include <iostream>
#include <strstream>

using namespace std;

void report(strstream &x)
{
    if (!x.good())
        cout << "stream bad" << endl;
    else
        cout << "stream good" << endl;
}

int main()
{
    strstream x;

    x << "test1";
    cout << "before freeze: ";
    report(x);

    // Calling str freezes stream.
    cout.write(x.rdbuf()->str(), 5) << endl;
    cout << "after freeze: ";
    report(x);

    // Stream is bad now, wrote on frozen stream
    x << "test1.5";
    cout << "after write to frozen stream: ";
    report(x);

    // Unfreeze stream, but it is still bad
    x.rdbuf()->freeze(false);
    cout << "after unfreezing stream: ";
    report(x);

    // Clear stream
    x.clear();
    cout << "after clearing stream: ";
    report(x);

    x << "test3";
    cout.write(x.rdbuf()->str(), 10) << endl;

    // Clean up.  Failure to unfreeze stream will cause a
    // memory leak.
    x.rdbuf()->freeze(false);
}
  

Configuration requise

**En-tête :**strstream <de >

Espace de noms : std

Voir aussi

Référence

strstreambuf, classe

iostream, programmation

iostreams, conventions