Namespaces
Variants

std::basic_filebuf<CharT,Traits>:: overflow

From cppreference.net
protected :
virtual int_type overflow ( int_type ch = Traits :: eof ( ) ) ;

퍼트 영역의 일부 데이터를 연결된 문자 시퀀스(파일)에 기록합니다.

기본 클래스 버전처럼 동작합니다 std::basic_streambuf::overflow() , 단 "문자 소비"의 동작이 다음과 같이 정의된다는 점이 다릅니다:

1) 먼저, 임베드된 로캘의 std::codecvt::out 를 사용하여 문자를 외부 (다중 바이트일 수 있는) 표현으로 변환하여 임시 버퍼에 저장합니다. ( XSIZE 는 지정되지 않은 버퍼 크기입니다)
const std::codecvt<CharT, char, typename Traits::state_type>& a_codecvt =
    std::use_facet<std::codecvt<CharT, char, typename Traits::state_type>>(getloc());
typename Traits::state_type state;
CharT* end;
char xbuf[XSIZE];
char* xbuf_end;
std::codecvt_base::result r =
    a_codecvt.out(state, pbase(), pptr(), end, xbuf, xbuf + XSIZE, xbuf_end);
2) 그런 다음 버퍼에서 완전히 변환된 모든 문자를 파일에 기록합니다. 형식적으로, r 값에 따라 다음 단계를 수행합니다:
r 동작
std:: codecvt_base :: ok [ xbuf , xbuf_end ) 내의 문자를 파일에 출력하고, 출력이 실패하면 실패합니다. 이때 pbase ( ) ! = pptr ( ) pbase ( ) == end 가 모두 true 인 경우(즉 xbuf 가 하나의 외부 문자에도 충분히 크지 않음을 의미), XSIZE 를 증가시키고 처음부터 반복합니다.
std:: codecvt_base :: partial [ xbuf , xbuf_end ) 내의 변환된 외부 문자를 파일에 출력하고, [ end , pptr ( ) ) 에 남아있는 변환되지 않은 내부 문자를 사용하여 반복합니다. 출력이 실패하면 (반복 없이) 실패합니다.
std:: codecvt_base :: noconv [ pbase ( ) , pptr ( ) ) 내의 문자를 파일에 출력합니다.
std:: codecvt_base :: error 실패합니다.
연결된 파일이 열려 있지 않은 경우( is_open() false 를 반환하면), 출력은 항상 실패합니다.
3) 관찰 가능한 체크포인트 를 설정합니다.
(since C++26)

목차

매개변수

ch - put 영역에 저장할 문자

반환값

Traits :: not_eof ( ch ) 성공을 나타내거나 Traits :: eof ( ) 실패를 나타냅니다.

참고 사항

만약 a_codecvt. always_noconv ( ) true 를 반환하면, a_codecvt. out ( ) 호출은 생략될 수 있습니다.

예제

참고 항목

[virtual]
put 영역에서 연관된 출력 시퀀스로 문자를 기록함
( std::basic_streambuf<CharT,Traits> 의 virtual protected 멤버 함수)
[virtual]
연관된 파일에서 읽어들임
(virtual protected 멤버 함수)