2012-08-27 13 views
33

Ich habe über Stream, insbesondere Dateiströme gehört.C++: Was ist ein Stream

Also was sind sie?

Ist es etwas, das einen Speicherort im Speicher hat?

Ist es etwas, das Daten enthält?

Ist es nur eine Verbindung zwischen einer Datei und einem Objekt?

Jede Hilfe wäre

Antwort

39

Der Begriff Strom ist eine Abstraktion eines Konstrukts zu erkennen, dass Sie eine unbekannte Anzahl von Bytes zu senden oder zu empfangen. Die Metapher ist ein Strom von Wasser. Sie nehmen die Daten so, wie sie kommen, oder senden sie nach Bedarf. Vergleichen Sie dies zum Beispiel mit einem Array, das eine feste, bekannte Länge hat.

Beispiele für Streams sind das Lesen und Schreiben von Dateien sowie das Empfangen oder Senden von Daten über eine externe Verbindung. Jedoch ist der Begriff Strom generisch und sagt nichts über die spezifische Implementierung aus.

+2

Es ist also wie ein "Flussstrom", der von der Quelle zum Ziel fließt. Und der Strom ist der Fluss selbst –

+0

Konzeptionell könnte man es so sagen. –

+1

So kann ich einen Stream als die Sache betrachten, die (zB) Daten von der Konsole zum Variablen –

8

IOStreams sind eine Front-End-Schnittstelle (std::istream, std::ostream), die zum Definieren von Eingabe- und Ausgabefunktionen verwendet wird. Die Streams speichern auch Formatierungsoptionen, z. B. die Basis, die für die Ganzzahlausgabe verwendet werden soll, und halten ein Objekt std::locale für alle Arten der Anpassung. Ihre wichtigste Komponente ist ein Zeiger auf eine , die definiert, wie auf eine Folge von Zeichen zugegriffen wird, z. B. eine Datei, eine Zeichenfolge, ein Bereich auf dem Bildschirm usw. Speziell für Dateien und Strings werden spezielle Stream-Puffer bereitgestellt und Klassen abgeleitet Die Stream-Basisklassen werden zur einfacheren Erstellung bereitgestellt. Die Beschreibung der gesamten Möglichkeiten der IOStreams-Bibliothek kann ein ganzes Buch füllen: In C++ 2003 war etwa die Hälfte der Bibliotheksbereiche der streambezogenen Funktionalität gewidmet.

2

Das Dateisystem kann mit einer Vielzahl von Geräten wie Terminals, Festplatten, Bandlaufwerken usw. zusammenarbeiten. Obwohl jedes Gerät unterschiedlich ist, wandelt das Dateisystem jedes in ein logisches Gerät mit der Bezeichnung Stream um. Streams sind geräteunabhängig, so dass die gleiche Funktion verwendet werden kann, um eine Disk-Datei und eine Tape-Datei zu schreiben. In mehr technischen Begriffen bietet der Stream eine Abstraktion zwischen dem Programmierer und dem tatsächlich verwendeten Gerät.

5

Stream ist eine lineare Warteschlange, die eine Datei mit dem Programm verbindet und den Datenfluss in beiden Richtungen aufrechterhält. Hier ist die Quelle eine Datei, E/A-Gerät, Festplatte, CD/DVD usw.

Grundsätzlich Strom ist, wenn zwei Typ 1.Text Stream-2.Binary Strom

Text Stream: Es ist eine Folge von Das Zeichen wird in Zeile angeordnet und jede Zeile wird durch eine neue Zeile (Unix) abgeschlossen.

Binärer Stream: Es handelt sich um Daten, da sie intern im Hauptspeicher des Computers codiert werden, ohne dass Änderungen vorgenommen werden.

+0

Ich habe diese Frage schon im Jahr 2012 gestellt: "D komisch zu sehen, dass es immer noch Aufmerksamkeit bekommt. Danke –

+0

diese Antwort ist viel einfacher zu verstehen! –