std::strstream:: freeze
|
void
freeze
(
bool
flag
=
true
)
;
|
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
|
스트림이 출력을 위해 동적으로 할당된 배열을 사용하는 경우, 자동 버퍼 할당/해제를 비활성화( flag == true )하거나 활성화( flag == false )합니다. 효과적으로 rdbuf ( ) - > freeze ( flag ) 를 호출합니다.
목차 |
참고 사항
str() 호출 후에는 동적 스트림이 자동으로 고정(frozen)됩니다. 이 strstream 객체가 생성된 범위(scope)를 벗어나기 전에 freeze ( false ) 호출이 필요하며, 그렇지 않으면 소멸자에서 메모리 누수가 발생합니다. 또한 고정된 스트림에 추가 출력이 발생할 경우, 할당된 버퍼의 끝에 도달하면 출력이 중단(truncated)될 수 있습니다.
매개변수
| flag | - | desired status |
반환값
(없음)
예제
#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
의 public member function)
|