std::basic_istream<CharT,Traits>:: putback
|
basic_istream
&
putback
(
char_type ch
)
;
|
||
Помещает символ ch обратно во входной поток, чтобы следующим извлекаемым символом был ch .
Сначала сбрасывает
eofbit
, затем ведёт себя как
UnformattedInputFunction
. После создания и проверки сторожевого объекта, если
rdbuf()
не является нулевым, вызывает
rdbuf
(
)
-
>
sputbackc
(
ch
)
, который вызывает
rdbuf
(
)
-
>
pbackfail
(
ch
)
, если
ch
не равен последнему извлечённому символу.
Если
rdbuf()
является нулевым указателем или если
rdbuf
-
>
sputbackc
(
ch
)
возвращает
Traits
::
eof
(
)
, вызывается
setstate
(
badbit
)
.
В любом случае, устанавливает счётчик
gcount()
в ноль.
Содержание |
Параметры
| ch | - | символ для помещения во входной поток |
Возвращаемое значение
* this
Исключения
Если внутренняя операция выбрасывает исключение, оно перехватывается и
badbit
устанавливается. Если
exceptions()
установлен для
badbit
, исключение выбрасывается повторно.
Пример
Демонстрирует разницу между модифицирующим и немодифицирующим
putback()
.
#include <iostream> #include <sstream> int main() { std::stringstream s1("Hello, world"); // IO stream s1.get(); if (s1.putback('Y')) // modifies the buffer std::cout << s1.rdbuf() << '\n'; else std::cout << "putback failed\n"; std::cout << "--\n"; std::istringstream s2("Hello, world"); // input-only stream s2.get(); if (s2.putback('Y')) // cannot modify input-only buffer std::cout << s2.rdbuf() << '\n'; else std::cout << "putback failed\n"; s2.clear(); std::cout << "--\n"; if (s2.putback('H')) // non-modifying putback std::cout << s2.rdbuf() << '\n'; else std::cout << "putback failed\n"; }
Вывод:
Yello, world -- putback failed -- Hello, world
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 2243 | C++98 |
sputbackc()
вызывалась без аргументов
|
вызывается с ch |
Смотрите также
|
возвращает один символ обратно во входную последовательность
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
отменяет извлечение символа
(публичная функция-член) |
|
|
читает следующий символ без его извлечения
(публичная функция-член) |