std::strstream:: freeze
|
void
freeze
(
bool
flag
=
true
)
;
|
(устарело в C++98)
(удалено в C++26) |
|
Если поток использует динамически выделяемый массив для вывода, отключает ( flag == true ) или включает ( flag == false ) автоматическое выделение/освобождение буфера. Фактически вызывает rdbuf ( ) - > freeze ( flag ) .
Содержание |
Примечания
После вызова str() динамические потоки автоматически замораживаются. Перед выходом из области видимости, в которой был создан этот strstream объект, требуется вызов freeze ( false ) , иначе деструктор приведёт к утечке памяти. Кроме того, дополнительный вывод в замороженный поток может быть обрезан при достижении конца выделенного буфера.
Параметры
| flag | - | желаемый статус |
Возвращаемое значение
(нет)
Пример
#include <iostream> #include <strstream> int main() { std::strstream dyn; // динамически выделенный выходной буфер dyn << "Test: " << 1.23; // примечание: нет std::ends для демонстрации добавления std::cout << "The output stream contains \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; // поток теперь заморожен из-за str() dyn << " More text"; // вывод в замороженный поток может быть обрезан std::cout << "The output stream contains \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; dyn.freeze(false); // freeze(false) должен быть вызван, иначе деструктор приведет к утечке std::strstream dyn2; // динамически выделенный выходной буфер dyn2 << "Test: " << 1.23; // примечание: нет std::ends std::cout << "The output stream contains \""; std::cout.write(dyn2.str(), dyn2.pcount()) << "\"\n"; dyn2.freeze(false); // разморозить поток после str() dyn2 << " More text" << std::ends; // вывод не будет обрезан (буфер растет) std::cout << "The output stream contains \"" << dyn2.str() << "\"\n"; dyn2.freeze(false); // freeze(false) должен быть вызван, иначе деструктор приведет к утечке }
Возможный вывод:
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"
Смотрите также
|
устанавливает/сбрасывает замороженное состояние буфера
(публичная функция-член
std::strstreambuf
)
|