С++ поддерживает ряд встроенных потоков, которые автоматически открываются при запуске программы:
- cin – поток стандартного ввода (по умолчанию ввод осуществляется с клавиатуры);
- cout – поток стандартного вывода (для вывода по умолчанию используется монитор);
- cerr – поток стандартного вывода сообщений об ошибках (вывод по умолчанию также осуществляется на монитор);
- clog – аналогичен cerr, за исключением того, что данный поток использует буферизацию, а cerr – нет.
В C++ также предусмотрены версии потоков для работы со строками, состоящими из двухбайтных символов типа wchar_t. Это wcin, wcout, wcerr, wclog.
Потоки для работы с другими файловыми устройствами нужно в программе создавать явно, для чего могут быть использованы классы из файлов fstream.h и sstream.h.
Для работы со стандартными потоками ввода-вывода используются операции записи в поток (<<) и чтения из потока (>>).
Например, простейшая программа, выводящая данные на экран выглядит так:
#include <iostream>
using namespace std;
void main()
{
cout << "Hello world!";
}
Здесь сначала подключается библиотека iostream, содержащая средства для работы с потоком вывода cout, затем объявляется что программа используем пространство имен std, в котором cout объявлен. Вывод осуществляется записью в поток cout константной строки с приветствием. При этом переход на новую строку не осуществляется. Поэтому при следующем выводе на экран новая строка окажется «склеенной» с предыдущей. Для перехода на новую строку используется символ '\n', поэтому оператор вывода можно записать в следующем виде:
cout <<"Hello world!\n";
или
cout << "Hello world!" << '\n';
Последняя запись демонстрирует, что в одном операторе можно вывести сразу несколько порций данных используя операции <<.
Пример считывания значений с клавиатуры:
#include <iostream>
using namespace std;
void main()
{
int a, b, c;
cout << "Введите два целых числа: ";
cin >> a >> b;
c = a + b;
cout << "\nСумма чисел: " << c << ", разность: " << a - b;
}
Здесь с помощью cin считываются сразу 2 переменные a и b. При этом программа ожидает пока пользователь введет два значения, разделённые либо пробелами, либо табуляцией, либо разрывами строк.
При использовании потоков cin и cout и операторов извлечения >> и вставки << новички часто путаются. Различать их довольно просто.
- cIN означает «внутрь», т.е. ввод данных в программу, считывание с клавиатуры.
- cOUT означает «наружу», т.е. вывод данных программой, печать их на мониторе.
- операция << означает, что данные передаются справа налево, т.е.
cout << var
значит: передать значение var в cout, на монитор.
- операция >> означает, что данные передаются слева направо, т.е.
cin >> var
значит: передать значение из cin (с клавиатуры) в переменную var.