Einführung: Was ist denn nun ein Stream?

Auf unterster Ebene betrachtet man eine Datei einfach als eine Folge oder auch einen Stream von Bytes. Auf der Anwendungsebene hat man es nicht mit einzelnen Bytes, sondern mit einer Folge von Datentypen bzw. Objekten zu tun. Auch diese kann man sich als einen Stream vorstellen, sozusagen als aneinandergehängte Objekte, wobei letztere auch verschiedenen Klassen angehören können. Diesen Stream von Bytes bzw. Objekten darf man sich dabei ruhig so anschaulich vorstellen, wie es durch die Begriffswahl suggeriert wird: daß nämlich die Objekte diesen Strom entlangfließen. Dieses Bild wird komplettiert durch die Wahl des Ein- bzw. Ausgabeoperators:

Zum Beispiel schreibt/schiebt

  <stream> >> x

die Daten aus dem Stream nach x (also in Pfeilrichtung), während

  <stream> << x

die Daten von x an den Stream ausgibt.
Der Stream <stream> kann dabei sowohl für eine Ausgabe auf dem Bildschirm als auch für eine Ausgabe in eine Datei stehen (hierfür gibt es zwei verschiedene Streamklassen, auf die wir noch zu sprechen kommen). Analoges gilt für die Eingabe von Daten.