Namespaces
Variants

std::basic_streambuf<CharT,Traits>:: pubsetbuf, std::basic_streambuf<CharT,Traits>:: setbuf

From cppreference.net
public :
basic_streambuf < CharT, Traits > * pubsetbuf ( char_type * s, std:: streamsize n )
(1)
protected :
virtual basic_streambuf < CharT, Traits > * setbuf ( char_type * s, std:: streamsize n )
(2)
1) 가장 파생된 클래스의 setbuf ( s, n ) 를 호출합니다.
2) 이 함수의 기본 클래스 버전은 아무런 효과가 없습니다. 파생 클래스들은 이 함수를 재정의하여 제어되는 문자 시퀀스(버퍼)를 사용자 제공 배열로 제거하거나 교체하거나, 기타 구현별 목적을 위해 사용할 수 있습니다.

목차

매개변수

s - 사용자가 제공한 버퍼의 첫 번째 CharT 를 가리키는 포인터
n - 사용자가 제공한 버퍼 내 CharT 요소의 개수

반환값

1) setbuf ( s, n ) 의 반환 값.
2) this

예제

읽기를 위한 10k 버퍼를 제공합니다. Linux에서는 strace 유틸리티를 사용하여 실제로 읽은 바이트 수를 관찰할 수 있습니다.

#include <fstream>
#include <iostream>
#include <string>
int main()
{
    int cnt = 0;
    std::ifstream file;
    char buf[1024 * 10 + 1];
    file.rdbuf()->pubsetbuf(buf, sizeof buf);
    file.open("/usr/share/dict/words");
    for (std::string line; getline(file, line);)
        ++cnt;
    std::cout << cnt << '\n';
}

가능한 출력:

356010

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 158 C++98 setbuf 의 기본 동작은
gptr() 이 null이 아니고 egptr() 과 같지 않은 경우에만 명시됨
모든 경우에 대해
no-op로 명시

참고 항목

[virtual]
제어되는 문자 시퀀스를 배열로 교체하려 시도합니다
( std::basic_stringbuf<CharT,Traits,Allocator> 의 virtual protected 멤버 함수)
[virtual]
사용자 제공 버퍼를 설정하거나 이 filebuf를 비버퍼링으로 전환합니다
( std::basic_filebuf<CharT,Traits> 의 virtual protected 멤버 함수)
[virtual]
제어되는 문자 시퀀스를 배열로 교체하려 시도합니다
( std::strstreambuf 의 virtual protected 멤버 함수)
파일 스트림의 버퍼를 설정합니다
(함수)