Потоковый вывод выполняется с помощью операции включения (или помещения)<<. Стандартная операция сдвига влево << для операций вывода переопределяется. Ее левый операнд - это объект типа ostream, а правый операция может иметь любой стандартный тип, т.к. оператор << перегружен таким образом, чтобы поддерживать все стандартные типы данных. Операция << ассоциируется слева направо и возвращает ссылку на объект ostream, для которого она вызывается. Это позволяет выполнять каскад операций. Пример:
printf(“ Целое число:%d,число с плавающей точкой: %f”,i,f);
заменяется в С++ на
cout<<”Целое число:”<<i<<”,число с плавающей точкой: ”<<f;
Оператор << самостоятельно анализирует тип данных и выбирает формат их представления.
Перегрузка оператора <<
Допускается перегружать данный оператор. Прямым следствием перегрузки является возможность расширения операторов << и>> для обработки данных нестандартных типов. Ниже показано, как перегрузить оператор вывода, чтобы он мог принимать данные нового типа tclient:
struct tclient {char pszname[25]; char pszaddress[30];int pszphone;}
ostream& operator << (ostream& osout, tclient client)
{ osout<<” “<< client.pszname;
osout<<” “<< client.pszaddress;
osout<<” “<< client.pszphone;
}
Теперь для вывода содержимого структуры client необходимо задать следующий оператор:
cout<<client;
Эффективность операторов << и >> объясняется компактностью их программного кода.