Потоком ввода-вывода называется абстрактное понятие, относящееся
к любому переносу данных от источника (или поставщика данных) к приемнику (или потребителю) данных.
В Турбо и Borland C++ используется новый способ работы с потоками ввода-вывода, который заключается в использовании операций '>>' и
'<<'. Функции потоков сокращают время разработки программы, избавляя
от необходимости непосредственно иметь дело с различными типами форматов, которые требуются для функций рrintf и scanf. Ниже показан сравнительный пример:
Си Турбо и Borland C++
#include <stdio.h> #include <iostream.h>
main() main()
{ {
int k; int k;
printf("Введите число: "); cout << "Введите число: ";
scanf("%d", &k); cin >> k;
printf("Число: %d\n", k); cout << "Число: " << k;
} }
cout - стандартный выходной поток (по умолчанию - экран). Данные
(например, значения переменных и строки) посылаются в поток с помощью
операции <<. Операция << (читающаяся как "поместить в...") пересылает
данные справа от нее в поток слева.
cin - стандартный входной поток (обычно - клавиатура). Значения,
вводимые с клавиатуры, присваиваются переменным с помощью операции
>>. Использование операций >> и << для потоков ввода/вывода является
типичным примером переопределения операций в С++ (см. ).
Кроме cout и cin в библиотеке iostream предопределены - cerr
(стандартное устройство для вывода сообщений об ошибках, соответствующее stderr в Си) и clog (полностью буферизованная версия cerr (в Си
эквивалента нет).
Реальное преимущество при работе с потоками С++ заключается в
той простоте, с какой можно переопределять операторы << и >> при работе с собственными типами данных. В C++ есть два класса, istream и
ostream, которые можно использовать для ввода в объекты и вывода из
них. Возможно написание собственных функций элементов работы с потоками, что и демонстрируется в следующем примере: