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 에 대한 공용 인터페이스는 모든 스트림 버퍼에 공통적인 작업을 제공합니다. 그러나 특수화되어 있습니다. 보호된 인터페이스에서는 해당 작업을 수행하기 위해 스트림의 특정 표현에 필요한 작업을 제공합니다. 보호된 가상 멤버 함수를 사용하면 스트림의 특정 표현에 대한 파생된 스트림 버퍼의 동작을 사용자 지정할 수 있습니다. 이 라이브러리에 있는 파생된 각 스트림 버퍼는 보호된 가상 멤버 함수의 동작을 특수화하는 방법을 설명합니다. 기본 클래스의 기본 동작(종종 아무 작업도 수행하지 않는 경우)은 이 문서에 설명되어 있습니다.

나머지 보호된 멤버 함수는 스트림과의 버퍼 전송에 제공된 스토리지에 복사하거나 이러한 스토리지에서 복사하는 것을 제어합니다. 예를 들어 입력 버퍼의 특징은 다음과 같습니다.

  • eback - 버퍼의 시작 부분에 대한 포인터입니다.

  • gptr - 읽을 다음 요소에 대한 포인터입니다.

  • egptr, 버퍼의 끝을 지나는 포인터입니다.

마찬가지로, 출력 버퍼의 특징은 다음과 같습니다.

  • pbase - 버퍼의 시작 부분에 대한 포인터입니다.

  • pptr - 쓸 다음 요소에 대한 포인터입니다.

  • epptr, 버퍼의 끝을 지나는 포인터입니다.

모든 버퍼에 대해 다음 프로토콜이 사용됩니다.

  • 다음 포인터가 null이면 버퍼가 존재하지 않습니다. 그렇지 않은 경우 세 포인터는 모두 동일한 시퀀스를 가리킵니다. 포인터는 주문을 위해 안전하게 비교할 수 있습니다.

  • 출력 버퍼의 경우, 다음 포인터가 끝 포인터보다 작게 비교되는 경우 다음 포인터로 지정되는 쓰기 위치에서 요소를 저장할 수 있습니다.

  • 입력 버퍼의 경우, 다음 포인터가 끝 포인터보다 작게 비교되는 경우 다음 포인터로 지정되는 읽기 위치에서 요소를 읽을 수 있습니다.

  • 입력 버퍼의 경우, 시작 포인터가 다음 포인터보다 작게 비교되는 경우 감소하는 다음 포인터로 지정되는 putback 위치에서 요소를 다시 넣을 수 있습니다.

파생 클래스에 대해 작성하는 보호된 basic_streambufTr<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이 사용 가능한 경우 요소를 쓰기 위치에 저장하고 출력 버퍼에 대해 다음 포인터를 증가시킬 수 있습니다.

  • 출력 버퍼에 대해 새 스토리지 또는 추가 스토리지를 할당하여 쓰기 위치를 사용 가능하게 만들 수 있습니다.

  • 출력 버퍼의 시작 포인터와 다음 포인터 사이의 일부 또는 모든 요소를 외부 대상에 기록하여 쓰기 위치를 사용 가능하게 만들 수 있습니다.

가상 오버플로 함수는 syncunderflow 함수와 함께 streambuf 파생 클래스의 특성을 정의합니다. 각 파생 클래스는 오버플로를 다르게 구현할 수 있지만, 호출하는 스트림 클래스와의 인터페이스는 동일합니다.

overflow 함수는 put 영역이 꽉 찼을 때 sputcsputn 같은 공용 streambuf 함수에서 가장 자주 호출되지만 스트림 클래스를 비롯한 다른 클래스는 언제든지 overflow를 호출할 수 있습니다.

이 함수는 pbasepptr 포인터 사이의 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을 참조하세요.

_Which
포인터 위치에 대한 모드를 지정합니다. 기본적으로는 읽기 및 쓰기 위치를 수정할 수 있습니다.

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
찾을 위치입니다.

_Which
포인터 위치에 대한 모드를 지정합니다. 기본적으로는 읽기 및 쓰기 위치를 수정할 수 있습니다.

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을 참조하세요.

_Which
포인터 위치에 대한 모드를 지정합니다. 기본적으로는 읽기 및 쓰기 위치를 수정할 수 있습니다.

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
찾을 위치입니다.

_Which
포인터 위치에 대한 모드를 지정합니다. 기본적으로는 읽기 및 쓰기 위치를 수정할 수 있습니다.

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 함수는 syncoverflow 함수와 함께 streambuf 파생 클래스의 특성을 정의합니다. 각 파생 클래스는 underflow를 다르게 구현할 수 있지만, 호출하는 스트림 클래스와의 인터페이스는 동일합니다.

underflow 함수는 get 영역이 비었을 때 sgetcsgetn 같은 공용 streambuf 함수에서 가장 자주 호출되지만 스트림 클래스를 비롯한 다른 클래스는 언제든지 underflow를 호출할 수 있습니다.

underflow 함수는 get 영역에 입력 소스의 문자를 제공합니다. get 영역에 문자가 포함되어 있으면 underflow는 첫 번째 문자를 반환합니다. get 영역이 비어 있으면 get 영역 채우고 다음 문자(get 영역에 남겨둔)를 반환합니다. 더 이상 사용 가능한 문자가 없으면 underflowEOF를 반환하고 get 영역을 비워 둡니다.

strstreambuf 클래스에서 underflowoverflow에 대한 호출에 의해 동적으로 할당된 스토리지에 액세스하도록 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()될 경우 출력 스트림에 문자를 삽입하면 중지됩니다. 삽입된 요소의 수를 반환합니다.

참고 항목

C++ 표준 라이브러리의 스레드 보안
iostream 프로그래밍
iostreams 규칙