std:: basic_streambuf
|
헤더 파일에 정의됨
<streambuf>
|
||
|
template
<
class
CharT,
|
||
클래스
basic_streambuf
는 문자 시퀀스에 대한 입력과 출력을 제어합니다. 여기에는 다음이 포함되며 접근을 제공합니다
- 제어되는 문자 시퀀스 , 일명 버퍼 는 입력 작업을 버퍼링하기 위한 입력 시퀀스 (일명 get area )와/또는 출력 작업을 버퍼링하기 위한 출력 시퀀스 (일명 put area )를 포함할 수 있습니다.
- 연관된 문자 시퀀스 , 일명 소스 (입력용) 또는 싱크 (출력용). 이는 OS API를 통해 접근되는 개체(파일, TCP 소켓, 시리얼 포트, 기타 문자 장치)일 수 있으며, 문자 소스 또는 싱크로 해석될 수 있는 객체( std::vector , array , string literal )일 수도 있습니다.
I/O 스트림 객체들인
std::basic_istream
와
std::basic_ostream
, 그리고 이들로부터 파생된 모든 객체들(
std::ofstream
,
std::stringstream
등)은 전적으로
std::basic_streambuf
를 기반으로 구현됩니다.
제어되는 문자 시퀀스는
CharT
배열로, 항상 연관된 문자 시퀀스의 부분 시퀀스 또는 "윈도우"를 나타냅니다. 그 상태는 세 개의 포인터로 설명됩니다:
- 시작 포인터 는 항상 버퍼의 가장 낮은 요소를 가리킵니다.
- 다음 포인터 는 읽기 또는 쓰기 후보인 다음 요소를 가리킵니다.
- 끝 포인터 는 버퍼의 끝 바로 다음을 가리킵니다.
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
로부터 파생됩니다.
일반적인 문자 타입에 대한 여러 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) |