std::basic_streambuf<CharT,Traits>:: sputbackc
|
int_type sputbackc
(
char_type c
)
;
|
||
문자 하나를 get 영역으로 되돌립니다.
만약 읽기 영역에 되돌리기 위치가 사용 가능하고(
gptr
(
)
>
eback
(
)
), 문자
c
가
gptr()
의 왼쪽 한 위치에 있는 문자와 동일하면(
Traits
::
eq
(
c, gptr
(
)
[
-
1
]
)
로 판단), 다음 포인터(
gptr()
)를 간단히 감소시킵니다.
그렇지 않으면, get 영역을 되돌리거나 get 영역과 연관된 문자 시퀀스를 수정하기 위해 pbackfail ( Traits :: to_int_type ( c ) ) 를 호출합니다.
I/O 스트림 함수 basic_istream::putback 는 이 함수를 기반으로 구현됩니다.
목차 |
매개변수
| c | - | 되돌릴 문자 |
반환값
되돌리기 위치가 사용 가능했던 경우, 다음 포인터가 현재 가리키고 있는 문자를
int_type
로 변환하여 반환합니다. 변환은
Traits
::
to_int_type
(
*
gptr
(
)
)
를 통해 이루어집니다. 이 스트림 버퍼에서의 다음 단일 문자 입력은 이 문자를 반환할 것입니다.
되돌리기 위치를 사용할 수 없는 경우, pbackfail() 이 반환하는 값을 반환하며, 실패 시에는 Traits :: eof ( ) 입니다.
예제
#include <iostream> #include <sstream> int main() { std::stringstream s("abcdef"); // gptr()이 "abcdef"의 'a'를 가리킴 std::cout << "Before putback, string holds " << s.str() << '\n'; char c1 = s.get(); // c1 = 'a', gptr()이 이제 "abcdef"의 'b'를 가리킴 char c2 = s.rdbuf()->sputbackc('z'); // s.putback('z')와 동일 // gptr()이 이제 "zbcdef"의 'z'를 가리킴 std::cout << "After putback, string holds " << s.str() << '\n'; char c3 = s.get(); // c3 = 'z', gptr()이 이제 "zbcdef"의 'b'를 가리킴 char c4 = s.get(); // c4 = 'b', gptr()이 이제 "zbcdef"의 'c'를 가리킴 std::cout << c1 << c2 << c3 << c4 << '\n'; s.rdbuf()->sputbackc('b'); // gptr()이 이제 "zbcdef"의 'b'를 가리킴 s.rdbuf()->sputbackc('z'); // gptr()이 이제 "zbcdef"의 'z'를 가리킴 int eof = s.rdbuf()->sputbackc('x'); // 되돌릴 문자가 없음: pbackfail() 실패 if (eof == EOF) std::cout << "No room to putback after 'z'\n"; }
출력:
Before putback, string holds abcdef After putback, string holds zbcdef azzb No room to putback after 'z'
참고 항목
|
입력 시퀀스의 다음 포인터를 하나 뒤로 이동
(public member function) |
|
|
입력 스트림에 문자를 넣음
(
std::basic_istream<CharT,Traits>
의
public member function)
|