Большинство средств управления вводом-выводом сосредоточены в классе ios, который является базовым для ostream и istream. По сути здесь находится управление связью между istream или ostream и буфером, используемым для операций ввода-вывода. Именно класс ios контролирует: как символы попадают в буфер и как они выбираются оттуда. Так, в классе ios есть член, содержащий информацию об используемой при чтении или записи целых чисел системы счисления (десятичная, восьмеричная или шестнадцатеричная), о точности вещественных чисел и т.п., а также функции для проверки и установки значений переменных, управляющих потоком.
class ios { //... public: ostream* tie(ostream* s); // связать input и output ostream* tie(); // возвратить "tie"
int width(int w); // установить поле width int width() const;
char fill(char); // установить символ заполнения char fill() const; // вернуть символ заполнения
long flags(long f); long flags() const;
long setf(long setbits, long field); long setf(long); long unsetf(long);
int precision(int); // установить точность для float int precision() const; int rdstate(); const; // состояния потоков, см. §10.3.2 int eof() const; int fail() const; int bad() const; int good() const; void clear(int i=0);
//... };
В 10.3.2 описаны функции, работающие с состоянием потока, остальные приведены ниже.