std::strstreambuf:: setbuf
|
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 멤버 함수)
|