С++ обеспечивает поддержку системы ввода/вывода в заголовочном файле iostream.h. В этом файле определены две иерархии классов, поддерживающие операции ввода/вывода. Классом нижнего уровня является streambuf. Этот класс обеспечивает базовые операции ввода/вывода. До тех пор, пока не вводятся свои собственные классы ввода/вывода, непосредственно streambuf не используется. Вторая иерархия классов начинается с класса ios. Он обеспечивает поддержку форматированного ввода/вывода. От него порождены классы istream, ostream и iostream. Эти классы использованы для создания потоков, способных осуществлять ввод, вывод и ввод/вывод соответственно. Как будет показано далее, от класса ios порождено много других классов, поддерживающих файлы на диске и форматирование в памяти.
Класс ios содержит много функций-членов и переменных, которые управляют фундаментальными операциями с потоками. Надо иметь в виду, что если использовать систему ввода/вывода С++ обычным образом, то члены класса ios будут доступны для использования любым потоком.