Namespaces
Variants

std::ostrstream:: str

From cppreference.net

char * str ( ) ;
(C++98에서 사용 중단됨)
(C++26에서 제거됨)

버퍼의 시작 부분에 대한 포인터를 반환하며, 이를 동결합니다. 효과적으로 rdbuf ( ) - > str ( ) 를 호출합니다.

목차

매개변수

(없음)

반환값

연결된 std:: strstreambuf 내 버퍼의 시작 부분을 가리키는 포인터 또는 사용 가능한 버퍼가 없는 경우 널 포인터입니다.

참고 사항

str() 호출로 결과를 C 문자열로 사용하기 전에, 스트림 버퍼는 널 종료되어야 합니다. stream << 1.2 와 같은 일반 출력은 널 종료자를 저장하지 않으므로, 일반적으로 매니퓰레이터 std::ends 를 사용하여 명시적으로 추가해야 합니다.

str() 를 호출한 후에는 동적 스트림이 고정됩니다. 이 ostrstream 객체가 생성된 범위를 벗어나기 전에 freeze(false) 호출이 필요합니다. 그렇지 않으면 소멸자에서 메모리 누수가 발생합니다. 또한 고정된 스트림에 추가 출력이 발생하면 할당된 버퍼의 끝에 도달했을 때 잘릴 수 있으며, 이로 인해 버퍼가 널 종료되지 않은 상태로 남을 수 있습니다.

예제

#include <iostream>
#include <strstream>
int main()
{
    std::ostrstream dyn; // 동적으로 할당된 출력 버퍼
    dyn << "Test: " << 1.23; // append 동작을 보여주기 위해 std::ends를 추가하지 않음
    std::cout << "The output stream holds \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; 
    // str() 호출로 인해 스트림이 이제 freeze 상태임
    dyn << " More text" << std::ends;
    std::cout << "The output stream holds \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
    dyn.freeze(false);
}

가능한 출력:

The stream holds "Test: 1.23"
The stream holds "Test: 1.23 More "

참고 항목

버퍼를 고정 상태로 표시하고 입력 시퀀스의 시작 포인터를 반환합니다
( std::strstreambuf 의 public member function)