Поток явился развитием идеи о том, что со всеми устройствами можно работать как с файлами. То есть если что-то передается с одного места в другое, то операции обычно совершенно одинаковые. Толи мы отправляем данные из памяти в файл, толи на экран все должно быть универсально. Кроме того, сами устройства довольно сильно различаются. Можно из разделить на два типа, блочные и символьные. Например, монитор это символьное устройство. А вот диск это блочное. Для ускорения работы с блочными устройствами удобно применять буферизацию, а с символьными в этом не необходимости. Вторая мысль была в том, чтобы придать операциям с файлами черты объектно-ориентированного подхода. Итак, основные преимущества по сравнению со стандартным вводом-выводом:
Я приведу пример, который создает пустой поток в памяти, помещает туда данные, а потом сам используется для потока вывода на экран.
// TestStream.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "strstrea.h" #include "iostream.h" void main() { strstream buf; double d=12.3456; buf << "Hello" << " " << d; cout << buf.rdbuf() << endl; }