Namespaces
Variants

std:: basic_streambuf

From cppreference.net
< cpp ‎ | io
헤더 파일에 정의됨 <streambuf>
template <

class CharT,
class Traits = std:: char_traits < CharT >

> class basic_streambuf ;

클래스 basic_streambuf 는 문자 시퀀스에 대한 입력과 출력을 제어합니다. 여기에는 다음이 포함되며 접근을 제공합니다

  1. 제어되는 문자 시퀀스 , 일명 버퍼 는 입력 작업을 버퍼링하기 위한 입력 시퀀스 (일명 get area )와/또는 출력 작업을 버퍼링하기 위한 출력 시퀀스 (일명 put area )를 포함할 수 있습니다.
  2. 연관된 문자 시퀀스 , 일명 소스 (입력용) 또는 싱크 (출력용). 이는 OS API를 통해 접근되는 개체(파일, TCP 소켓, 시리얼 포트, 기타 문자 장치)일 수 있으며, 문자 소스 또는 싱크로 해석될 수 있는 객체( std::vector , array , string literal )일 수도 있습니다.

I/O 스트림 객체들인 std::basic_istream std::basic_ostream , 그리고 이들로부터 파생된 모든 객체들( std::ofstream , std::stringstream 등)은 전적으로 std::basic_streambuf 를 기반으로 구현됩니다.

제어되는 문자 시퀀스는 CharT 배열로, 항상 연관된 문자 시퀀스의 부분 시퀀스 또는 "윈도우"를 나타냅니다. 그 상태는 세 개의 포인터로 설명됩니다:

  1. 시작 포인터 는 항상 버퍼의 가장 낮은 요소를 가리킵니다.
  2. 다음 포인터 는 읽기 또는 쓰기 후보인 다음 요소를 가리킵니다.
  3. 끝 포인터 는 버퍼의 끝 바로 다음을 가리킵니다.

A basic_streambuf 객체는 입력(이 경우 시작, 다음, 끝 포인터로 설명되는 버퍼를 get area 라 함), 출력( put area ), 또는 동시에 입력과 출력을 지원할 수 있습니다. 후자의 경우 여섯 개의 포인터가 추적되며, 이들은 모두 동일한 문자 배열의 요소를 가리키거나 두 개의 개별 배열을 가리킬 수 있습니다.

만약 put 영역에서 next 포인터가 end 포인터보다 작으면, 쓰기 위치 가 사용 가능합니다. next 포인터를 역참조하고 값을 할당할 수 있습니다.

가져오기 영역에서 다음 포인터가 끝 포인터보다 작으면 읽기 위치 가 사용 가능합니다. 다음 포인터를 역참조하여 읽을 수 있습니다.

get 영역에서 다음 포인터가 시작 포인터보다 크면, putback position 이 사용 가능하며, 다음 포인터를 감소시키고 역참조하여 할당함으로써 get 영역에 문자를 다시 넣을 수 있습니다.

제어 시퀀스의 문자 표현과 인코딩은 연관 시퀀스의 문자 표현과 다를 수 있으며, 이 경우 일반적으로 std::codecvt 로케일 패싯이 변환을 수행하는 데 사용됩니다. 일반적인 예시는 std::wfstream 객체를 통해 접근되는 UTF-8(또는 다른 멀티바이트) 파일입니다: 제어 시퀀스는 wchar_t 문자로 구성되지만, 연관 시퀀스는 바이트로 구성됩니다.

std::basic_streambuf 베이스 클래스의 일반적인 구현은 여섯 개의 CharT* 포인터와 std::locale 사본만을 데이터 멤버로 보유합니다. 추가적으로, 구현체는 로케일 패싯의 캐시된 사본을 유지할 수 있으며, 이는 imbue() 가 호출될 때마다 무효화됩니다. std::basic_filebuf 또는 std::basic_stringbuf 와 같은 구체적인 버퍼들은 std::basic_streambuf 로부터 파생됩니다.

std-streambuf.svg

일반적인 문자 타입에 대한 여러 typedef가 제공됩니다:

헤더 파일에 정의됨 <streambuf>
타입 정의
std::streambuf std :: basic_streambuf < char >
std::wstreambuf std :: basic_streambuf < wchar_t >

목차

멤버 타입

멤버 타입 정의
char_type CharT
traits_type Traits ; Traits::char_type CharT 가 아닌 경우 프로그램은 ill-formed입니다.
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type

멤버 함수

[virtual]
basic_streambuf 객체를 소멸시킵니다
(virtual public member function)
로케일
연결된 로캘을 변경하고 imbue ( ) 를 호출합니다
(public member function)
연결된 로캘의 사본을 획득함
(public member function)
포지셔닝
setbuf 를 호출합니다 setbuf ( )
(public member function)
seekoff 를 호출합니다 seekoff ( )
(public member function)
seekpos ( ) 를 호출합니다
(public member function)
sync ( ) 를 호출합니다
(public member function)
면적 구하기
get 영역에서 즉시 사용 가능한 문자 수를 얻음
(public member function)
입력 시퀀스를 진행시킨 후, 다시 진행하지 않고 한 문자를 읽습니다
(public member function)
(C++17에서 제거됨)
입력 시퀀스에서 한 문자를 읽고 시퀀스를 전진시킴
(public member function)
입력 시퀀스에서 한 문자를 읽되 시퀀스를 진행하지 않음
(public member function)
xsgetn ( ) 를 호출합니다
(public member function)
Put 영역
퍼트 영역에 한 문자를 기록하고 다음 포인터를 전진시킴
(public member function)
xsputn ( ) 를 호출합니다
(public member function)
Putback
입력 시퀀스에 한 문자를 되돌려 놓음
(public member function)
입력 시퀀스의 다음 포인터를 하나 뒤로 이동
(public member function)

보호된 멤버 함수

basic_streambuf 객체를 생성합니다
(protected 멤버 함수)
(C++11)
basic_streambuf 객체를 대체합니다
(보호된 멤버 함수)
(C++11)
두 개의 basic_streambuf 객체를 교환
(보호된 멤버 함수)
로케일
[virtual]
연결된 로캘 변경에 반응함
(가상 protected 멤버 함수)
포지셔닝
[virtual]
사용자 정의 배열로 버퍼를 교체합니다(허용되는 경우)
(가상 protected 멤버 함수)
[virtual]
입력 시퀀스, 출력 시퀀스, 또는 둘 모두에서 다음 포인터를 상대 주소 지정을 사용하여 재위치합니다
(가상 protected 멤버 함수)
[virtual]
입력 시퀀스, 출력 시퀀스 또는 둘 모두에서 다음 포인터를 절대 주소 지정을 사용하여 재위치합니다
(가상 protected 멤버 함수)
[virtual]
연관된 문자 시퀀스와 버퍼를 동기화합니다
(가상 protected 멤버 함수)
영역 가져오기
[virtual]
연결된 입력 시퀀스에서 사용 가능한 문자 수를 확인합니다(알려진 경우)
(가상 protected 멤버 함수)
[virtual]
연관된 입력 시퀀스에서 문자를 읽어 get 영역으로 가져옴
(가상 protected 멤버 함수)
[virtual]
연관된 입력 시퀀스에서 문자를 읽어 get 영역으로 가져오고 다음 포인터를 진행시킴
(가상 protected 멤버 함수)
[virtual]
입력 시퀀스에서 여러 문자를 읽어옴
(가상 protected 멤버 함수)
읽기 영역의 시작, 현재 문자 및 끝을 가리키는 포인터를 반환합니다
(보호된 멤버 함수)
입력 시퀀스의 다음 포인터를 전진시킴
(protected member function)
입력 시퀀스의 시작, 다음, 끝 포인터 위치를 재설정합니다
(protected member function)
Put area
[virtual]
출력 시퀀스에 여러 문자를 기록합니다
(가상 protected 멤버 함수)
[virtual]
put 영역에서 연관된 출력 시퀀스로 문자를 기록합니다
(가상 protected 멤버 함수)
출력 영역의 시작, 현재 문자 및 끝에 대한 포인터를 반환합니다
(보호된 멤버 함수)
출력 시퀀스의 다음 포인터를 전진시킴
(protected member function)
출력 시퀀스의 시작, 다음, 끝 포인터를 재배치합니다
(protected member function)
Putback
[virtual]
입력 시퀀스에 문자를 다시 넣으며, 입력 시퀀스를 수정할 수 있음
(가상 protected 멤버 함수)

참고 항목

C 입출력 스트림을 제어하는 데 필요한 모든 정보를 담을 수 있는 객체 타입
(typedef)