std::basic_streambuf<CharT,Traits>:: sungetc
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
int_type sungetc
(
)
;
|
||
Если позиция возврата доступна в области получения ( gptr ( ) > eback ( ) ), тогда уменьшает следующий указатель ( gptr() ) и возвращает символ, на который он теперь указывает.
Если позиция возврата недоступна, то вызывается pbackfail() для отката входной последовательности, если это возможно.
Функция потока ввода-вывода 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 << "Нечего возвращать после 'a'\n"; }
Вывод:
aaab Nothing to unget after 'a'
Смотрите также
|
возвращает один символ во входную последовательность
(публичная функция-член) |
|
|
извлекает символ обратно
(публичная функция-член
std::basic_istream<CharT,Traits>
)
|