Namespaces
Variants

std::basic_streambuf<CharT,Traits>:: sungetc

From cppreference.net
int_type sungetc ( ) ;

퍼트백 위치가 획득 영역에서 사용 가능한 경우( gptr ( ) > eback ( ) ), 다음 포인터( gptr() )를 감소시키고 현재 가리키는 문자를 반환합니다.

되돌리기 위치를 사용할 수 없는 경우, 가능하다면 입력 시퀀스를 되돌리기 위해 pbackfail() 을 호출합니다.

I/O 스트림 함수 basic_istream::unget 는 이 함수를 기반으로 구현됩니다.

목차

매개변수

(없음)

반환 값

되돌리기 위치가 사용 가능했던 경우, 다음 포인터가 현재 가리키고 있는 문자를 int_type 로 변환하여 반환합니다. 변환은 Traits :: to_int_type ( * gptr ( ) ) 를 통해 수행됩니다. 이 스트림 버퍼에서의 다음 단일 문자 입력은 이 문자를 반환할 것입니다.

되돌리기 위치를 사용할 수 없는 경우, pbackfail() 이 반환하는 값을 반환하며, 실패 시에는 Traits :: eof ( ) 입니다.

예제

#include <iostream>
#include <sstream>
int main()
{
    std::stringstream s("abcdef"); // gptr()이 'a'를 가리킴
    char c1 = s.get(); // c = 'a', gptr()이 이제 'b'를 가리킴
    char c2 = s.rdbuf()->sungetc(); // s.unget()과 동일: gptr()이 다시 'a'를 가리킴
    char c3 = s.get(); // c3 = 'a', gptr()이 이제 'b'를 가리킴
    char c4 = s.get(); // c4 = 'b', gptr()이 이제 'c'를 가리킴
    std::cout << c1 << c2 << c3 << c4 << '\n';
    s.rdbuf()->sungetc();  // 'b'로 돌아감
    s.rdbuf()->sungetc();  // 'a'로 돌아감
    int eof = s.rdbuf()->sungetc();  // 되돌릴 문자가 없음: pbackfail() 실패
    if (eof == EOF)
            std::cout << "Nothing to unget after 'a'\n";
}

출력:

aaab
Nothing to unget after 'a'

참고 항목

입력 시퀀스에 한 문자를 되돌려 놓음
(public member function)
문자를 추출 취소함
( std::basic_istream<CharT,Traits> 의 public member function)