Как и для ostream, большинство функций форматирования и управления вводом находится не в классе iostream, а в базовом классе ios.
class istream : public virtual ios { //... public: int peek() istream& putback(char c);
istream& seekg(streampos); istream& seekg(streamoff, seek_dir); streampos tellg(); //... };
Функции позиционирования работают как и их двойники из ostream. Окончание на букву g показывает, что именно позиция используется при вводе символов из заданного потока. Буквы p и g нужны, поскольку мы можем создать производный класс iostreams из классов ostream и istream, и в нем необходимо следить за позициями ввода и вывода.
С помощью функции peek() программа может узнать следующий символ, подлежащий вводу, не затрагивая результата последующего чтения. С помощью функции putback(), как показано в §10.3.3, можно вернуть ненужный символ назад в поток, чтобы он был прочитан в другое время.