С++ поддерживает несколько механизмов ввода вывода. Во-первых, это объектно-ориентированная система ввода-вывода, появившаяся в С++ и обеспечивающая работу с потоками. Поток (stream) – это абстракция, которая либо создает информацию, либо потребляет её и связывается с любым физическим устройством с помощью системы ввода-вывода. Характер поведения всех потоков одинаков, несмотря на то, что связываются они с различными физическими устройствами. Это позволяет применять одни функции и операторы ввода-вывода при выполнении разных задач, например, вывода на экран, печати на принтере, записи файла на диске.
Базовые объектно-ориентированные средства ввода-вывода объявлены в библиотеке iostream. Сейчас существует две версии этой библиотеки: старая, основанная на оригинальных спецификациях C++, доступ к которой осуществляется с помощью заголовочного файла iostream.h и новая, определённая стандартом C++, доступная через заголовочный файл iostream.
Новая библиотека является, по сути, улучшенной и расширенной реализацией старой, с новыми дополнительными средствами. Синтаксис объявлений в ней практически не изменился, т.е. работать с обеими библиотеками можно одним и тем же способом. Ещё одно отличие новой библиотеки – она использует пространство имен std, поэтому его надо подключать к программе оператором using namespace std или явно указывать пространство имен при каждом обращении к средствам ввода-вывода, например, так: std::cin, std::cout.
Второй механизм ввода-вывода – унаследованная от языка C процедурно-ориентированная система ввода-вывода. Она реализована в библиотеке стандартного ввода-вывода (ANSI C) и объявлена в заголовочном файле stdio.h.