basic_streambuf 클래스
스트림의 특정 표현과 요소 간의 전송을 제어하는 스트림 버퍼 파생을 위한 추상 기본 클래스에 대해 설명합니다.
구문
template <class Elem, class Tr = char_traits<Elem>>
class basic_streambuf;
매개 변수
Elem
char_type입니다.
Tr
traits_type 문자입니다.
설명
클래스 템플릿은 스트림의 특정 표현과 요소의 전송을 제어하는 스트림 버퍼를 파생하기 위한 추상 기본 클래스를 설명합니다. 클래스 basic_streambuf
의 개체는 char_type라고도 하는 Tr 형식의 요소를 사용하여 스트림을 제어하는 데 도움이 되며, 해당 문자 특성은 클래스 char_traits 의해 결정되며 traits_type이라고도 합니다.
모든 스트림 버퍼는 추출용(입력)과 삽입용(출력)의 독립적인 두 스트림을 개념적으로 제어합니다. 그러나 특정 표현의 경우 이러한 스트림 중 어느 하나 또는 모두를 액세스할 수 없도록 만들 수 있습니다. 일반적으로 두 스트림 간의 일부 관계는 유지합니다. 예를 들어 basic_stringbuf Tr
>Elem
<개체의 출력 스트림에 삽입하는 것은 나중에 입력 스트림에서 추출하는 것입니다. 한 스트림의 basic_filebufElem
< 개체>Tr
를 배치하면 다른 스트림을 동시에 배치합니다.
클래스 템플릿 basic_streambuf
에 대한 공용 인터페이스는 모든 스트림 버퍼에 공통적인 작업을 제공합니다. 그러나 특수화되어 있습니다. 보호된 인터페이스에서는 해당 작업을 수행하기 위해 스트림의 특정 표현에 필요한 작업을 제공합니다. 보호된 가상 멤버 함수를 사용하면 스트림의 특정 표현에 대한 파생된 스트림 버퍼의 동작을 사용자 지정할 수 있습니다. 이 라이브러리에 있는 파생된 각 스트림 버퍼는 보호된 가상 멤버 함수의 동작을 특수화하는 방법을 설명합니다. 기본 클래스의 기본 동작(종종 아무 작업도 수행하지 않는 경우)은 이 문서에 설명되어 있습니다.
나머지 보호된 멤버 함수는 스트림과의 버퍼 전송에 제공된 스토리지에 복사하거나 이러한 스토리지에서 복사하는 것을 제어합니다. 예를 들어 입력 버퍼의 특징은 다음과 같습니다.
마찬가지로, 출력 버퍼의 특징은 다음과 같습니다.
모든 버퍼에 대해 다음 프로토콜이 사용됩니다.
다음 포인터가 null이면 버퍼가 존재하지 않습니다. 그렇지 않은 경우 세 포인터는 모두 동일한 시퀀스를 가리킵니다. 포인터는 주문을 위해 안전하게 비교할 수 있습니다.
출력 버퍼의 경우, 다음 포인터가 끝 포인터보다 작게 비교되는 경우 다음 포인터로 지정되는 쓰기 위치에서 요소를 저장할 수 있습니다.
입력 버퍼의 경우, 다음 포인터가 끝 포인터보다 작게 비교되는 경우 다음 포인터로 지정되는 읽기 위치에서 요소를 읽을 수 있습니다.
입력 버퍼의 경우, 시작 포인터가 다음 포인터보다 작게 비교되는 경우 감소하는 다음 포인터로 지정되는 putback 위치에서 요소를 다시 넣을 수 있습니다.
파생 클래스에 대해 작성하는 보호된 가상 멤버 함수는 basic_streambuf
Tr
<Elem
> 이 프로토콜 유지 관리에 협력해야 합니다.
클래스 basic_streambuf
<Elem
의 개체로, Tr
> 앞에서 설명한 6개의 포인터를 저장합니다. 이 클래스는 파생된 스트림 버퍼가 사용할 것에 대비하여 locale 형식의 개체에 로캘 개체를 저장합니다.
생성자
생성자 | Description |
---|---|
basic_streambuf | basic_streambuf 형식의 개체를 생성합니다. |
Typedef
형식 이름 | 설명 |
---|---|
char_type | 형식 이름을 Elem 템플릿 매개 변수와 연결합니다. |
int_type | basic_streambuf 범위 내의 형식 이름을 Elem 템플릿 매개 변수와 연결합니다. |
off_type | basic_streambuf 범위 내의 형식 이름을 Elem 템플릿 매개 변수와 연결합니다. |
pos_type | basic_streambuf 범위 내의 형식 이름을 Elem 템플릿 매개 변수와 연결합니다. |
traits_type | 형식 이름을 Tr 템플릿 매개 변수와 연결합니다. |
멤버 함수
멤버 함수 | 설명 |
---|---|
eback | 포인터를 입력 버퍼의 시작 부분에 반환하는 보호된 함수입니다. |
egptr | 입력 버퍼의 끝을 지나 포인터를 반환하는 보호된 함수입니다. |
epptr | 출력 버퍼의 끝을 지나 포인터를 반환하는 보호된 함수입니다. |
gbump | 입력 버퍼에 대한 다음 포인터에 count 를 추가하는 보호된 함수입니다. |
getloc | basic_streambuf 개체의 로캘을 가져옵니다. |
gptr | 포인터를 입력 버퍼의 다음 요소에 반환하는 보호된 함수입니다. |
imbue | pubimbue에 의해 호출되는 보호된 가상 함수입니다. |
in_avail | 버퍼에서 읽을 준비가 된 요소의 수를 반환합니다. |
overflow | 가득 찬 버퍼에 새 문자를 삽입할 때 호출할 수 있는 보호된 가상 함수입니다. |
pbackfail | 보호된 가상 멤버 함수는 요소를 입력 스트림에 다시 넣은 후 다음 포인터에서 가리키는 현재 요소로 설정하려고 합니다. |
pbase | 포인터를 출력 버퍼의 시작 부분에 반환하는 보호된 함수입니다. |
pbump | 출력 버퍼에 대한 다음 포인터에 count 를 추가하는 보호된 함수입니다. |
pptr | 포인터를 출력 버퍼의 다음 요소에 반환하는 보호된 함수입니다. |
pubimbue | basic_streambuf 개체의 로캘을 설정합니다. |
pubseekoff | 파생 클래스에서 재정의되는 보호된 가상 함수인 seekoff를 호출합니다. |
pubseekpos | 파생 클래스에서 재정의되고, 현재 포인터 위치를 재설정하는 보호된 가상 함수인 seekpos를 호출합니다. |
pubsetbuf | 파생 클래스에서 재정의되는 보호된 가상 함수인 setbuf를 호출합니다. |
pubsync | 파생 클래스에서 재정의되고, 이 버퍼와 연결된 외부 스트림을 업데이트하는 보호된 가상 함수인 sync를 호출합니다. |
sbumpc | 스트림 포인터를 이동하여 현재 요소를 읽고 반환합니다. |
seekoff | 보호된 가상 멤버 함수는 제어된 스트림의 현재 위치를 변경하려고 합니다. |
seekpos | 보호된 가상 멤버 함수는 제어된 스트림의 현재 위치를 변경하려고 합니다. |
setbuf | 보호된 가상 멤버 함수는 파생된 각 스트림 버퍼와 관련된 작업을 수행합니다. |
setg | 입력 버퍼에 대한 시작 포인터에서 _Gbeg , 다음 포인터에서 _Gnext , 끝 포인터에서 _Gend 를 저장하는 보호된 함수입니다. |
setp | 출력 버퍼에 대한 시작 포인터에서 _Pbeg , 끝 포인터에서 _Pend 를 저장하는 보호된 함수입니다. |
sgetc | 스트림에서 위치를 변경하지 않고 현재 요소를 반환합니다. |
sgetn | 읽힌 요소 수를 반환합니다. |
showmanyc | 입력 스트림에서 추출할 수 있는 문자 수를 반환하는 보호된 가상 멤버 함수입니다. 또한 프로그램이 무기한 대기되지 않도록 합니다. |
snextc | 현재 요소를 읽고 다음 요소를 반환합니다. |
sputbackc | 스트림에 char_type 을 넣습니다. |
sputc | 스트림에 문자를 넣습니다. |
sputn | 스트림에 문자열을 넣습니다. |
stossc | 스트림에서 현재 요소를 지나 이동합니다. |
sungetc | 스트림에서 문자를 가져옵니다. |
swap | 이 개체에 있는 값을 제공된 basic_streambuf 개체 매개 변수에 있는 값으로 교환합니다. |
sync | 제어된 스트림을 연결된 외부 스트림과 동기화하려고 하는 보호된 가상 함수입니다. |
uflow | 입력 스트림에서 현재 요소를 추출하는 보호된 가상 함수입니다. |
underflow | 입력 스트림에서 현재 요소를 추출하는 보호된 가상 함수입니다. |
xsgetn | 입력 스트림에서 요소를 추출하는 보호된 가상 함수입니다. |
xsputn | 요소를 출력 스트림에 삽입하는 보호된 가상 함수입니다. |
연산자
연산자 | 설명 |
---|---|
operator= | 이 개체의 값을 다른 basic_streambuf 개체에서 할당합니다. |
요구 사항
헤더:<streambuf>
네임스페이스: std
basic_streambuf::basic_streambuf
basic_streambuf
형식의 개체를 생성합니다.
basic_streambuf();
basic_streambuf(const basic_streambuf& right);
매개 변수
right
이 basic_streambuf
개체에 값을 할당하는 데 사용되는 basic_streambuf
개체에 대한 lvalue 참조입니다.
설명
첫 번째 보호된 생성자는 입력 버퍼와 출력 버퍼를 제어하는 모든 포인터에 null 포인터를 저장합니다. 또한 locale::classic
을 로캘 개체에 저장합니다. 자세한 내용은 locale:: classic을 참조하세요.
보호된 두 번째 생성자는 오른쪽에서 포인터와 로캘을 복사합니다.
basic_streambuf::char_type
형식 이름을 Elem 템플릿 매개 변수와 연결합니다.
typedef Elem char_type;
basic_streambuf::eback
포인터를 입력 버퍼의 시작 부분에 반환하는 보호된 함수입니다.
char_type *eback() const;
Return Value
입력 버퍼의 시작 부분에 대한 포인터입니다.
basic_streambuf::egptr
입력 버퍼의 끝을 지나 포인터를 반환하는 보호된 함수입니다.
char_type *egptr() const;
Return Value
입력 버퍼의 끝을 지나는 포인터입니다.
basic_streambuf::epptr
출력 버퍼의 끝을 지나 포인터를 반환하는 보호된 함수입니다.
char_type *epptr() const;
Return Value
출력 버퍼의 끝을 지나는 포인터입니다.
basic_streambuf::gbump
입력 버퍼의 다음 포인터에 개수를 추가하는 보호된 함수입니다.
void gbump(int count);
매개 변수
count
포인터를 이동시킬 양입니다.
basic_streambuf::getloc
Basic_streambuf 개체의 로캘을 가져옵니다.
locale getloc() const;
Return Value
저장된 로캘 개체입니다.
설명
관련 내용은 ios_base::getloc를 참조하세요.
예시
// basic_streambuf_getloc.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << cout.rdbuf( )->getloc( ).name( ).c_str( ) << endl;
}
C
basic_streambuf::gptr
포인터를 입력 버퍼의 다음 요소에 반환하는 보호된 함수입니다.
char_type *gptr() const;
Return Value
입력 버퍼의 다음 요소에 대한 포인터입니다.
basic_streambuf::imbue
pubimbue에 의해 호출되는 보호된 가상 함수입니다.
virtual void imbue(const locale& _Loc);
매개 변수
_Loc
로캘에 대한 참조입니다.
설명
기본 동작은 아무것도 수행하지 않는 것입니다.
basic_streambuf::in_avail
버퍼에서 읽을 준비가 된 요소의 수를 반환합니다.
streamsize in_avail();
Return Value
버퍼에서 읽을 준비가 된 요소의 수입니다.
설명
읽기 위치를 사용할 수 있는 경우 멤버 함수는 egptr gptr - 을 반환합니다. 아닌 경우 showmanyc를 반환합니다.
예시
// basic_streambuf_in_avail.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
char c;
// cin's buffer is empty, in_avail will return 0
cout << cin.rdbuf( )->in_avail( ) << endl;
cin >> c;
cout << cin.rdbuf( )->in_avail( ) << endl;
}
basic_streambuf::int_type
basic_streambuf 범위 내 형식 이름을 템플릿 매개 변수의 형식 중 하나와 연결합니다.
typedef typename traits_type::int_type int_type;
basic_streambuf::off_type
basic_streambuf 범위 내 형식 이름을 템플릿 매개 변수의 형식 중 하나와 연결합니다.
typedef typename traits_type::off_type off_type;
basic_streambuf::operator=
이 개체의 값을 다른 basic_streambuf
개체에서 할당합니다.
basic_streambuf& operator=(const basic_streambuf& right);
매개 변수
right
이 개체에 값을 할당하는 데 사용되는 basic_streambuf
개체에 대한 lvalue 참조입니다.
설명
보호된 멤버 연산자는 입력 버퍼와 출력 버퍼를 제어하는 포인터 오른쪽에서 복사합니다. 또한 right.
getloc()를 locale object
에 저장합니다. *this
를 반환합니다.
basic_streambuf::overflow
가득 찬 버퍼에 새 문자를 삽입할 때 호출할 수 있는 보호된 가상 함수입니다.
virtual int_type overflow(int_type _Meta = traits_type::eof());
매개 변수
_메타
버퍼 또는 traits_type::eof에 삽입할 문자입니다.
Return Value
함수가 성공할 수 없는 경우 traits_type::eof를 반환하거나 예외를 throw합니다. 아닌 경우 traits_type::not_eof(_ Meta)를 반환합니다. 기본 동작은 traits_type::eof를 반환하는 것입니다.
설명
_Meta traits_type::eof와 비교되지 않으면 보호된 가상 멤버 함수는 출력 스트림에 traits_type::to_char_type(_Meta) 요소를 삽입하려고 합니다. 수행할 수 있는 방법은 다양합니다.
write position
이 사용 가능한 경우 요소를 쓰기 위치에 저장하고 출력 버퍼에 대해 다음 포인터를 증가시킬 수 있습니다.출력 버퍼에 대해 새 스토리지 또는 추가 스토리지를 할당하여 쓰기 위치를 사용 가능하게 만들 수 있습니다.
출력 버퍼의 시작 포인터와 다음 포인터 사이의 일부 또는 모든 요소를 외부 대상에 기록하여 쓰기 위치를 사용 가능하게 만들 수 있습니다.
가상 오버플로 함수는 sync 및 underflow 함수와 함께 streambuf 파생 클래스의 특성을 정의합니다. 각 파생 클래스는 오버플로를 다르게 구현할 수 있지만, 호출하는 스트림 클래스와의 인터페이스는 동일합니다.
overflow
함수는 put 영역이 꽉 찼을 때 sputc
및 sputn
같은 공용 streambuf
함수에서 가장 자주 호출되지만 스트림 클래스를 비롯한 다른 클래스는 언제든지 overflow
를 호출할 수 있습니다.
이 함수는 pbase
및 pptr
포인터 사이의 put 영역에 있는 문자를 사용하고 put 영역을 다시 초기화합니다. 함수는 overflow
다음 nCh
호출에서 사용할 수 있도록 해당 문자를 새 배치 영역에 배치하도록 선택할 수도 있습니다(그렇지 않은 EOF
경우nCh
).
소비의 정의는 파생 클래스에 따라 다릅니다. 예를 들어, filebuf
클래스는 문자를 파일에 기록하는 반면, strstreambuf
클래스는 문자를 버퍼에 보관하고(버퍼가 동적으로 지정된 경우) 오버플로 호출에 대한 응답으로 버퍼를 확장합니다. 이 확장은 이전 버퍼를 해제하고 더 큰 새 버퍼로 대체하여 수행됩니다. 포인터는 필요에 따라 조정됩니다.
basic_streambuf::p백페일
보호된 가상 멤버 함수는 요소를 입력 스트림에 다시 넣은 후 다음 포인터에서 가리키는 현재 요소로 설정하려고 합니다.
virtual int_type pbackfail(int_type _Meta = traits_type::eof());
매개 변수
_메타
버퍼 또는 traits_type::eof에 삽입할 문자입니다.
Return Value
함수가 성공할 수 없는 경우 traits_type::eof를 반환하거나 예외를 throw합니다. 성공할 경우 다른 값을 반환합니다. 기본 동작은 traits_type::eof를 반환하는 것입니다.
설명
_Meta traits_type::eof와 동일한 경우 푸시백할 요소는 현재 요소 앞에 이미 있는 요소입니다. 그렇지 않으면 해당 요소가 traits_type::to_char_type(_Meta)로 바뀝니다. 함수는 여러 가지 방법으로 요소를 다시 넣을 수 있습니다.
putback 위치가 사용 가능한 경우 요소를 putback 위치에 저장하고 입력 버퍼에 대해 다음 포인터를 증가시킬 수 있습니다.
입력 버퍼에 대해 새 스토리지 또는 추가 스토리지를 할당하여 putback 위치를 사용 가능하게 만들 수 있습니다.
공통된 입력 및 출력 스트림이 있는 스트림 버퍼의 경우, 출력 버퍼에 대한 시작 포인터와 다음 포인터 사이의 일부 또는 모든 요소를 외부 대상에 기록하여 putback 위치를 사용 가능하게 만들 수 있습니다.
basic_streambuf::p base
포인터를 출력 버퍼의 시작 부분에 반환하는 보호된 함수입니다.
char_type *pbase() const;
Return Value
출력 버퍼의 시작 부분에 대한 포인터입니다.
basic_streambuf::p범프
출력 버퍼에 대한 다음 포인터에 개수를 추가하는 보호된 함수입니다.
void pbump(int count);
매개 변수
count
쓰기 위치를 앞으로 이동시킬 문자 수입니다.
basic_streambuf::p os_type
basic_streambuf 범위 내 형식 이름을 템플릿 매개 변수의 형식 중 하나와 연결합니다.
typedef typename traits_type::pos_type pos_type;
basic_streambuf::p ptr
포인터를 출력 버퍼의 다음 요소에 반환하는 보호된 함수입니다.
char_type *pptr() const;
Return Value
출력 버퍼의 다음 요소에 대한 포인터입니다.
basic_streambuf::p ubimbue
basic_streambuf 개체의 로캘을 설정합니다.
locale pubimbue(const locale& _Loc);
매개 변수
_Loc
로캘에 대한 참조입니다.
Return Value
로캘 개체에 저장된 이전 값입니다.
설명
멤버 함수는 로캘 개체에 _ Loc를 저장하고 imbue를 호출합니다.
예시
pubimbue
의 사용 예제는 basic_ios::imbue를 참조하세요.
basic_streambuf::p ubseekoff
파생 클래스에서 재정의되는 보호된 가상 함수인 seekoff를 호출합니다.
pos_type pubseekoff(off_type _Off,
ios_base::seekdir _Way,
ios_base::openmode _Which = ios_base::in | ios_base::out);
매개 변수
_Off
_Way 기준으로 검색할 위치입니다.
_길
오프셋 작업의 시작 지점입니다. 가능한 값은 seekdir을 참조하세요.
_어느
포인터 위치에 대한 모드를 지정합니다. 기본적으로는 읽기 및 쓰기 위치를 수정할 수 있습니다.
Return Value
새 위치 또는 잘못된 스트림 위치(seekoff(_ Off, _Way
, _Which
))를 반환합니다.
설명
포인터를 _Way 기준으로 이동합니다.
basic_streambuf::p ubseekpos
파생 클래스에서 재정의되고, 현재 포인터 위치를 재설정하는 보호된 가상 함수인 seekpos를 호출합니다.
pos_type pubseekpos(pos_type _Sp, ios_base::openmode _Which = ios_base::in | ios_base::out);
매개 변수
_Sp
찾을 위치입니다.
_어느
포인터 위치에 대한 모드를 지정합니다. 기본적으로는 읽기 및 쓰기 위치를 수정할 수 있습니다.
Return Value
새 위치 또는 잘못된 스트림 위치입니다. 스트림 위치가 잘못되었는지를 확인하려면 반환 값을 pos_type(off_type(-1))
과 비교합니다.
설명
멤버 함수는 seekpos(_ Sp, _Which
)를 반환합니다.
basic_streambuf::p ubsetbuf
파생 클래스에서 재정의되는 보호된 가상 함수인 setbuf를 호출합니다.
basic_streambuf<Elem, Tr> *pubsetbuf(
char_type* _Buffer,
streamsize count);
매개 변수
_완충기
이 인스턴스화의 char_type
에 대한 포인터입니다.
count
버퍼 크기입니다.
Return Value
setbuf( _Buffer
, count
)를 반환합니다.
basic_streambuf::p ubsync
파생 클래스에서 재정의되고, 이 버퍼와 연결된 외부 스트림을 업데이트하는 보호된 가상 함수인 sync를 호출합니다.
int pubsync();
Return Value
동기화를 반환하거나 실패할 경우 -1을 반환합니다.
basic_streambuf::sbumpc
스트림 포인터를 이동하여 현재 요소를 읽고 반환합니다.
int_type sbumpc();
Return Value
현재 요소입니다.
설명
읽기 위치를 사용할 수 있는 경우 멤버 함수는 traits_type::to_int_type(*gptr)를 반환하고 입력 버퍼에 대한 다음 포인터를 증가합니다. 아닌 경우 uflow를 반환합니다.
예시
// basic_streambuf_sbumpc.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
int i = 0;
i = cin.rdbuf( )->sbumpc( );
cout << i << endl;
}
3
33
51
basic_streambuf::seekoff
제어되는 스트림의 현재 위치를 변경하려고 하는 보호된 가상 멤버 함수입니다.
virtual pos_type seekoff(
off_type _Off,
ios_base::seekdir _Way,
ios_base::openmode _Which = ios_base::in | ios_base::out);
매개 변수
_Off
_Way 기준으로 검색할 위치입니다.
_길
오프셋 작업의 시작 지점입니다. 가능한 값은 seekdir을 참조하세요.
_어느
포인터 위치에 대한 모드를 지정합니다. 기본적으로는 읽기 및 쓰기 위치를 수정할 수 있습니다.
Return Value
새 위치 또는 잘못된 스트림 위치(seekoff
(_ Off, _Way
, _Which
))를 반환합니다.
설명
새 위치는 다음과 같이 결정됩니다.
_Way
==ios_base::beg
인 경우 새 위치는 스트림 시작 부분에 _ Off를 더한 위치입니다._Way
==ios_base::cur
인 경우 새 위치는 현재 스트림 위치에 _ Off를 더한 위치입니다._Way
==ios_base::end
인 경우 새 위치는 스트림 끝에 _ Off를 더한 위치입니다.
일반적으로 which & ios_base::in이 0이 아닌 경우 입력 스트림이 영향을 받고, which & ios_base::out이 0이 아닌 경우 출력 스트림이 영향을 받습니다. 그러나 이 매개 변수의 실제 사용은 파생 스트림 버퍼 간에 다릅니다.
하나 이상의 스트림 위치를 정상적으로 변경하는 경우 함수는 결과 스트림 위치 또는 결과 스트림 위치 중 하나를 반환합니다. 실패하면 잘못된 스트림 위치를 반환합니다. 기본 동작은 잘못된 스트림 위치를 반환하는 것입니다.
basic_streambuf::seekpos
제어되는 스트림의 현재 위치를 변경하려고 하는 보호된 가상 멤버 함수입니다.
virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Which = ios_base::in | ios_base::out);
매개 변수
_Sp
찾을 위치입니다.
_어느
포인터 위치에 대한 모드를 지정합니다. 기본적으로는 읽기 및 쓰기 위치를 수정할 수 있습니다.
Return Value
새 위치 또는 잘못된 스트림 위치입니다. 스트림 위치가 잘못되었는지를 확인하려면 반환 값을 pos_type(off_type(-1))
과 비교합니다.
설명
새 위치는 _ Sp입니다.
일반적으로 which & ios_base::in이 0이 아닌 경우 입력 스트림이 영향을 받고, which & ios_base::out이 0이 아닌 경우 출력 스트림이 영향을 받습니다. 그러나 이 매개 변수의 실제 사용은 파생 스트림 버퍼 간에 다릅니다.
하나 이상의 스트림 위치를 정상적으로 변경하는 경우 함수는 결과 스트림 위치 또는 결과 스트림 위치 중 하나를 반환합니다. 아닌 경우 잘못된 스트림 위치(-1)를 반환합니다. 기본 동작은 잘못된 스트림 위치를 반환하는 것입니다.
basic_streambuf::setbuf
파생된 각 스트림 버퍼와 관련된 작업을 수행하는 보호된 가상 멤버 함수입니다.
virtual basic_streambuf<Elem, Tr> *setbuf(
char_type* _Buffer,
streamsize count);
매개 변수
_완충기
버퍼에 대한 포인터입니다.
count
버퍼의 크기입니다.
Return Value
기본 동작은 this
를 반환하는 것입니다.
설명
basic_filebuf를 참조하세요. setbuf
는 사용할 streambuf
개체에 대한 메모리 영역을 제공합니다. 버퍼가 사용되는 방법은 파생 클래스에서 정의됩니다.
basic_streambuf::setg
입력 버퍼에 대한 시작 포인터에 _ Gbeg, 다음 포인터에 _Gnext
, 끝 포인터 _Gend
를 저장하는 보호된 함수입니다.
void setg(char_type* _Gbeg,
char_type* _Gnext,
char_type* _Gend);
매개 변수
_Gbeg
버퍼의 시작에 대한 포인터입니다.
_Gnext
버퍼의 중간 부분에 대한 포인터입니다.
_Gend
버퍼의 끝에 대한 포인터입니다.
basic_streambuf::setp
시작 포인터에 _Pbeg 저장하고 출력 버퍼의 끝 포인터에 _Pend 보호된 함수입니다.
void setp(char_type* _Pbeg, char_type* _Pend);
매개 변수
_Pbeg
버퍼의 시작에 대한 포인터입니다.
_보류
버퍼의 끝에 대한 포인터입니다.
basic_streambuf::sgetc
스트림에서 위치를 변경하지 않고 현재 요소를 반환합니다.
int_type sgetc();
Return Value
현재 요소입니다.
설명
읽기 위치가 사용 가능한 경우 멤버 함수는 traits_type::to_int_type( *
gptr)을 반환합니다. 아닌 경우 underflow를 반환합니다.
예시
// basic_streambuf_sgetc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ifstream myfile( "basic_streambuf_sgetc.txt", ios::in );
char i = myfile.rdbuf( )->sgetc( );
cout << i << endl;
i = myfile.rdbuf( )->sgetc( );
cout << i << endl;
}
basic_streambuf::sgetn
입력 버퍼에서 최대 개수 까지 추출하여 제공된 버퍼 ptr에 저장합니다.
이 메서드는 전달된 값이 정확한지 확인하기 위해 호출자를 사용하므로 보안상 위험할 수 있습니다.
streamsize sgetn(
char_type* ptr,
streamsize count);
매개 변수
ptr
추출된 문자를 포함할 버퍼입니다.
count
읽을 요소의 수입니다.
Return Value
읽은 요소의 수입니다. 자세한 내용은 streamsize를 참조하세요.
설명
멤버 함수는 xsgetn( ptr
, count
)를 반환합니다.
예시
// basic_streambuf_sgetn.cpp
// compile with: /EHsc /W3
#include <iostream>
#include <fstream>
int main()
{
using namespace std;
ifstream myfile("basic_streambuf_sgetn.txt", ios::in);
char a[10];
// Extract 3 characters from myfile and store them in a.
streamsize i = myfile.rdbuf()->sgetn(&a[0], 3); // C4996
a[i] = myfile.widen('\0');
// Display the size and contents of the buffer passed to sgetn.
cout << i << " " << a << endl;
// Display the contents of the original input buffer.
cout << myfile.rdbuf() << endl;
}
basic_streambuf::showmanyc
입력 스트림에서 추출할 수 있는 문자 수를 반환하고 프로그램이 무기한 대기되지 않도록 하는 보호된 가상 멤버 함수입니다.
virtual streamsize showmanyc();
Return Value
기본 동작은 0을 반환하는 것입니다.
basic_streambuf::snextc
현재 요소를 읽고 다음 요소를 반환합니다.
int_type snextc();
Return Value
스트림에서 다음 요소입니다.
설명
멤버 함수는 sbumpc를 반환합니다. 해당 함수가 traits_type::eof를 반환하는 경우 traits_type::eof를 반환합니다. 아닌 경우 sgetc를 반환합니다.
예시
// basic_streambuf_snextc.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
int i = 0;
i = cin.rdbuf( )->snextc( );
// cout << ( int )char_traits<char>::eof << endl;
cout << i << endl;
}
aa
aa97
basic_streambuf::sputbackc
스트림에 char_type을 넣습니다.
int_type sputbackc(char_type _Ch);
매개 변수
_채널
문자입니다.
Return Value
문자 또는 실패를 반환합니다.
설명
putback 위치를 사용할 수 있고 _Ch 해당 위치에 저장된 문자와 같은 경우 멤버 함수는 입력 버퍼에 대한 다음 포인터를 감소시키고 traits_type::to_int_type(_Ch
)를 반환합니다. 아닌 경우 pbackfail( _Ch
)를 반환합니다.
예시
// basic_streambuf_sputbackc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ifstream myfile("basic_streambuf_sputbackc.txt",
ios::in);
int i = myfile.rdbuf()->sbumpc();
cout << (char)i << endl;
int j = myfile.rdbuf()->sputbackc('z');
if (j == 'z')
{
cout << "it worked" << endl;
}
i = myfile.rdbuf()->sgetc();
cout << (char)i << endl;
}
basic_streambuf::sputc
스트림에 문자를 넣습니다.
int_type sputc(char_type _Ch);
매개 변수
_채널
문자입니다.
Return Value
성공할 경우 해당 문자를 반환합니다.
설명
write position
사용 가능한 경우 멤버 함수는 _Ch 쓰기 위치에 저장하고 출력 버퍼에 대한 다음 포인터를 증가시키고 traits_type::to_int_type(_Ch
)를 반환합니다. 아닌 경우 overflow( _Ch
)를 반환합니다.
예시
// basic_streambuf_sputc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
int i = cout.rdbuf( )->sputc( 'a' );
cout << endl << ( char )i << endl;
}
a
a
basic_streambuf::sputn
스트림에 문자열을 넣습니다.
streamsize sputn(const char_type* ptr, streamsize count);
매개 변수
ptr
문자열입니다.
count
문자 수입니다.
Return Value
스트림에 삽입된 문자 수입니다.
설명
멤버 함수는 xsputn( ptr
, count
)를 반환합니다. 자세한 내용은 이 멤버의 설명 섹션을 참조하세요.
예시
// basic_streambuf_sputn.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main()
{
using namespace std;
streamsize i = cout.rdbuf()->sputn("test", 4);
cout << endl << i << endl;
}
test
4
basic_streambuf::stossc
스트림에서 현재 요소를 지나 이동합니다.
void stossc();
설명
멤버 함수는 sbumpc를 호출합니다. 이 멤버 함수를 제공하는 데 구현이 필요하지 않습니다.
예시
// basic_streambuf_stossc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ifstream myfile( "basic_streambuf_stossc.txt", ios::in );
myfile.rdbuf( )->stossc( );
char i = myfile.rdbuf( )->sgetc( );
cout << i << endl;
}
basic_streambuf::sungetc
스트림에서 문자를 가져옵니다.
int_type sungetc();
Return Value
문자 또는 실패를 반환합니다.
설명
Putback 위치가 사용 가능한 경우 멤버 함수는 입력 버퍼에 대한 다음 포인터를 감소시키고 traits_type::
to_int_type( *
gptr)을 반환합니다. 그러나 현재 버퍼의 상태에서 캡처할 수 있도록 마지막 문자 읽기를 항상 확인할 수는 없습니다. 이것이 true인 경우 함수는 pbackfail을 반환합니다. 이 상황을 방지하려면 다시 배치하고 호출 sputbackc(ch)
할 문자를 추적합니다. 이 문자는 스트림의 시작 부분에서 호출하지 않고 둘 이상의 문자를 다시 배치하지 않으면 실패하지 않습니다.
예시
// basic_streambuf_sungetc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ifstream myfile( "basic_streambuf_sungetc.txt", ios::in );
// Read and increment
int i = myfile.rdbuf( )->sbumpc( );
cout << ( char )i << endl;
// Read and increment
i = myfile.rdbuf( )->sbumpc( );
cout << ( char )i << endl;
// Decrement, read, and do not increment
i = myfile.rdbuf( )->sungetc( );
cout << ( char )i << endl;
i = myfile.rdbuf( )->sungetc( );
cout << ( char )i << endl;
i = myfile.rdbuf( )->sbumpc( );
cout << ( char )i << endl;
}
basic_streambuf::swap
이 개체에 있는 값을 제공된 basic_streambuf
개체에 있는 값으로 교환합니다.
void swap(basic_streambuf& right);
매개 변수
right
값을 교환하는 데 사용되는 basic_streambuf
개체에 대한 lvalue 참조입니다.
설명
보호된 멤버 함수는 해당 포인터와 output buffer
을 제어하는 input buffer
모든 포인터와 교환됩니다. 또한 right.
getloc()을 locale
개체와 교환합니다.
basic_streambuf::sync
제어된 스트림을 연결된 외부 스트림과 동기화하려고 하는 보호된 가상 함수입니다.
virtual int sync();
Return Value
함수가 성공할 수 없으면 -1을 반환합니다. 기본 동작은 0을 반환하는 것입니다.
설명
sync
에는 출력 버퍼에 대한 시작 포인터와 다음 포인터 사이의 모든 요소를 기록하는 것이 포함됩니다. 입력 버퍼에 대한 다음 포인터와 끝 포인터 사이에 요소를 다시 배치하는 작업은 포함되지 않습니다.
basic_streambuf::traits_type
형식 이름을 Tr 템플릿 매개 변수와 연결합니다.
typedef Tr traits_type;
basic_streambuf::uflow
입력 스트림에서 현재 요소를 추출하는 보호된 가상 함수입니다.
virtual int_type uflow();
Return Value
현재 요소입니다.
설명
보호된 가상 멤버 함수는 입력 버퍼에서 현재 요소 ch 추출을 시도한 다음 현재 스트림 위치로 이동하여 요소를 traits_type::to_int_type( ch)로서 반환합니다. 수행할 수 있는 방법은 다양합니다.
읽기 위치를 사용할 수 있으면 함수는 읽기 위치에 저장된 요소로 ch를 가져온 후 입력 버퍼의 다음 포인터로 이동합니다.
일부 외부 소스에서 요소를 직접 읽고, ch 값으로서 전달할 수 있습니다.
공통된 입력 및 출력 스트림이 있는 스트림 버퍼의 경우, 출력 버퍼에 대한 시작 포인터와 다음 포인터 사이의 일부 또는 모든 요소를 외부 대상에 기록하여 읽기 위치를 사용 가능하게 만들 수 있습니다. 또는 입력 버퍼에 대해 새 스토리지 또는 추가 스토리지를 할당할 수 있습니다. 그런 다음 함수는 일부 외부 소스에서 하나 이상의 요소를 읽습니다.
함수가 성공할 수 없는 경우 traits_type::eof를 반환하거나 예외를 throw합니다. 성공할 경우, 위에서 설명한 대로 변환된 입력 스트림에서 현재 요소 ch
를 반환하고 입력 버퍼의 다음 포인터로 이동합니다. 기본 동작은 underflow를 호출하는 것입니다. 해당 함수가 traits_type::eof를 반환할 경우 traits_type::eof를 반환합니다. 아닌 경우, 위에서 설명한 대로 변환된 입력 스트림에서 현재 요소 ch를 반환하고 입력 버퍼의 다음 포인터로 이동합니다.
basic_streambuf::underflow
입력 스트림에서 현재 요소를 추출하는 보호된 가상 함수입니다.
virtual int_type underflow();
Return Value
현재 요소입니다.
설명
보호된 가상 멤버 함수는 입력 스트림에서 현재 요소 ch 추출을 시도한 다음 현재 스트림 위치로 이동하여 요소를 traits_type::
to_int_type( ch)로서 반환합니다. 수행할 수 있는 방법은 다양합니다.
읽기 위치를 사용할 수 있는 경우 ch는 읽기 위치에 저장된 요소입니다. 자세한 내용은 basic_streambuf 클래스의 설명 섹션을 참조하세요.
입력 버퍼에 대해 새 스토리지 또는 추가 스토리지를 할당한 다음, 일부 외부 소스에서 하나 이상의 요소를 읽음으로써 읽기 위치를 사용 가능하게 만들 수 있습니다. 자세한 내용은 basic_streambuf 클래스의 설명 섹션을 참조하세요.
함수가 성공할 수 없으면 eof()
를 반환traits_type::
하거나 예외를 throw합니다. 성공할 경우 위에서 설명한 대로 변환된 입력 스트림의 현재 요소를 반환합니다. 기본 동작은 traits_type::eof()
를 반환하는 것입니다.
가상 underflow
함수는 sync 및 overflow 함수와 함께 streambuf
파생 클래스의 특성을 정의합니다. 각 파생 클래스는 underflow
를 다르게 구현할 수 있지만, 호출하는 스트림 클래스와의 인터페이스는 동일합니다.
underflow
함수는 get 영역이 비었을 때 sgetc 및 sgetn 같은 공용 streambuf
함수에서 가장 자주 호출되지만 스트림 클래스를 비롯한 다른 클래스는 언제든지 underflow
를 호출할 수 있습니다.
underflow
함수는 get 영역에 입력 소스의 문자를 제공합니다. get 영역에 문자가 포함되어 있으면 underflow
는 첫 번째 문자를 반환합니다. get 영역이 비어 있으면 get 영역 채우고 다음 문자(get 영역에 남겨둔)를 반환합니다. 더 이상 사용 가능한 문자가 없으면 underflow
는 EOF
를 반환하고 get 영역을 비워 둡니다.
strstreambuf
클래스에서 underflow
는 overflow
에 대한 호출에 의해 동적으로 할당된 스토리지에 액세스하도록 egptr 포인터를 조정합니다.
basic_streambuf::xsgetn
입력 스트림에서 요소를 추출하기 위한 보호된 가상 함수입니다.
이 메서드는 전달된 값이 정확한지 확인하기 위해 호출자를 사용하므로 보안상 위험할 수 있습니다.
virtual streamsize xsgetn(
char_type* ptr,
streamsize count);
매개 변수
ptr
추출된 문자를 포함할 버퍼입니다.
count
추출할 요소의 수입니다.
Return Value
추출된 요소의 수입니다.
설명
보호된 가상 멤버 함수는 sbumpc를 반복적으로 호출하는 것처럼 입력 스트림에서 요소 수를 계산할 수 있도록 추출하고 ptr부터 배열에 저장합니다. 추출된 요소의 수를 반환합니다.
basic_streambuf::xsputn
요소를 출력 스트림에 삽입하기 위한 보호된 가상 함수입니다.
virtual streamsize xsputn(const char_type* ptr, streamsize count);
매개 변수
ptr
삽입할 요소에 대한 포인터입니다.
count
삽입할 요소의 수입니다.
Return Value
스트림에 삽입된 요소 수입니다.
설명
보호된 가상 멤버 함수는 ptr에서 시작하는 배열에서 sputc를 반복적으로 호출하는 것처럼 출력 스트림에 최대 개수까지 요소를 삽입합니다. 모든 개수 문자가 기록되거나 호출 sputc( count)
이 반환 traits::eof()
될 경우 출력 스트림에 문자를 삽입하면 중지됩니다. 삽입된 요소의 수를 반환합니다.