Namespaces
Variants

std::strstreambuf:: setbuf

From cppreference.net
protected :
virtual streambuf * setbuf ( char * s, std:: streamsize n ) ;
(C++98에서 사용 중단됨)
(C++26에서 제거됨)

만약 s 가 널 포인터이고 n 이 0이면, 이 함수는 아무런 효과도 가지지 않습니다.

그렇지 않으면, 결과는 구현에 따라 정의됩니다: 일부 구현은 아무 작업도 수행하지 않는 반면, 일부 구현은 버퍼로 사용되는 동적 멤버 배열을 할당 해제하고 크기가 n 인 사용자 제공 문자 배열을 사용하기 시작하며, 이 배열의 첫 번째 요소는 s 가 가리킵니다.

이 함수는 protected virtual로, 오직 pubsetbuf() 를 통해서만 호출되거나 사용자 정의 클래스의 멤버 함수에서 std::strstreambuf 를 상속받은 경우에만 호출될 수 있습니다.

목차

매개변수

s - 사용자가 제공한 버퍼의 첫 번째 바이트를 가리키는 포인터
n - 사용자가 제공한 버퍼의 바이트 수

반환값

this

예제

동적 strstream에서 setbuf() 가 지원되는지 확인하는 구현 테스트 (Sun Studio로 얻은 출력 결과):

#include <iostream>
#include <strstream>
int main()
{
    char a[100] = {};
    std::strstream str;
    str.rdbuf()->pubsetbuf(a, sizeof a);
    str << "Test string" << std::ends;
    std::cout << "user-provided buffer holds \"" << a << "\"\n";
}

가능한 출력:

user-provided buffer holds "Test string"

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 66 C++98 setbuf() 의 효과는 " strstreambuf 에서 파생된
각 클래스에 대해 별도로 정의된 작업을 수행한다"였으나,
strstreambuf 에서 파생된 클래스가 존재하지 않음
효과는
구현에 따라 정의됨

참고 항목

setbuf ( ) 를 호출합니다
( std::basic_streambuf<CharT,Traits> 의 public 멤버 함수)
[virtual]
허용되는 경우 사용자 정의 배열로 버퍼를 교체합니다
( std::basic_streambuf<CharT,Traits> 의 virtual protected 멤버 함수)
[virtual]
제어되는 문자 시퀀스를 배열로 교체하려 시도합니다
( std::basic_stringbuf<CharT,Traits,Allocator> 의 virtual protected 멤버 함수)
[virtual]
사용자가 제공한 버퍼를 제공하거나 이 filebuf를 비버퍼링으로 전환합니다
( std::basic_filebuf<CharT,Traits> 의 virtual protected 멤버 함수)