std::basic_istream<CharT,Traits>::putback
basic_istream& putback( char_type ch ); |
Возвращает символ ch обратно в поток ввода, чтобы следующий извлеченный символ был ch.
Сначала очищает eofbit, затем ведет себя как UnformattedInputFunction. После создания и проверки объекта-сторожа, если rdbuf() не равен null, вызывает rdbuf()->sputbackc(ch), которое вызывает rdbuf()->pbackfail(ch), если ch не равно последнему извлеченному символу.
Если rdbuf() равно null или если rdbuf->sputbackc(ch) возвращает Traits::eof(), вызывает setstate(badbit).
В любом случае устанавливает счётчик gcount() в ноль.
Параметры
| ch | - | символ для возврата в поток ввода |
Возвращаемое значение
*this
Исключения
failure если произошла ошибка (флаг состояния ошибки не goodbit) и exceptions() задано бросать исключение для этого состояния. Если внутренняя операция бросила исключение, оно перехватывается и устанавливается 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
См. также
| возвращает один символ обратно в последовательность ввода (публичный член-функция std::basic_streambuf<CharT,Traits>) |
|
| возвращает символ обратно в поток (публичный член-функция) |
|
| читает следующий символ без его извлечения (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_istream/putback