Поделиться через


strstreambuf::freeze

Вызывает буфер потока недоступной с помощью операций буфера потока.

void freeze( 
   bool _Freezeit = true 
);

Параметры

  • _Freezeit
    bool, указывающее, нужно ли поток, замороженным.

Заметки

Если _Freezeit выполняется, функция изменяет сохраненного режима strstreambuf, чтобы сделать контролируемую замороженную последовательность. В противном случае она не выполняет контролируемую замороженную последовательность.

str определяет freeze.

Примечание

Замороженный буфер не будет удаленного во время удаления strstreambuf.Необходимо разморозить буфер перед его удаленного во избежание утечки памяти.

Пример

// 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);
}
  

Требования

Заголовок:<strstream>

Пространство имен: std

См. также

Ссылки

Класс strstreambuf

Программирование iostream

Соглашения iostreams