std::basic_istream<CharT,Traits>::unget
basic_istream& unget(); |
Снова делает доступным последний извлечённый символ.
Сначала очищает eofbit, затем ведёт себя как функция неформатированного ввода. После создания и проверки объекта sentry, если установлены какие-либо флаги ios_base::iostate, функция устанавливает failbit и возвращает управление. В противном случае вызывает rdbuf()->sungetc().
Если rdbuf()->sungetc() возвращает Traits::eof(), вызывает setstate(badbit).
В любом случае устанавливает счётчик gcount() в ноль.
Параметры
(нет)
Возвращаемое значение
*this
Исключения
failure, если произошла ошибка (флаг состояния ошибки не равен goodbit) и для этого состояния установлено exceptions().
Если внутренняя операция выбрасывает исключение, оно перехватывается, а badbit устанавливается. Если для badbit установлено exceptions(), исключение выбрасывается повторно.
Пример
#include <iostream>
#include <sstream>
int main()
{
std::istringstream s1("Hello, world.");
char c1 = s1.get();
if (s1.unget())
{
char c2 = s1.get();
std::cout << "Got: '" << c1 << "'. Got again: '" << c2 << "'.\n";
}
}
Вывод:
Got: 'H'. Got again: 'H'.
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющих поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| DR | Применяется к | Опубликованное поведение | Правильное поведение |
|---|---|---|---|
|
LWG 1328 (N3168) | C++98 |
unget не очищает eofbit | сначала очищает eofbit |
См. также
| перемещает указатель на следующую позицию во входной последовательности на один символ назад (открытая функция-член std::basic_streambuf<CharT,Traits>) |
|
| извлекает символы (открытая функция-член) |
|
| читает следующий символ, не извлекая его (открытая функция-член) |
|
| помещает символ во входной поток (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_istream/unget