Stream -Klassenhierarchie
Eine C ++ - Klasse besteht aus Methoden, die zur Verwaltung und Bestimmung der von ihnen enthaltenen Daten erforderlich sind.
Float, Doppel und Klassen sind Datentypen ähnlich wie int int. Eine eindeutige Variable mit einer Klasse als Datentyp wird als C ++ - Objekt bezeichnet. Die vorgegebenen speziellen Objekte "CIN" und "Cout" haben verschiedene Klassen als Datentypen.
Die an 'Cout' geschriebenen Daten oder Lesen von 'CIN' sind Beispiele für Datenflüsse in oder aus Programmen in C++. Derzeit betrachten wir die folgenden vier Klassen für diesen:
IStream
Jeder Zweck kann durch diesen Eingangsstrom bedient werden. Eine Illustration eines IsTream ist CIN.
Ostream
Es ist ein Ausgangsstrom mit mehreren Verwendungen. Ostreams sind in den Formen von Cout und CIN enthalten.
Wenn Stream
Es ist ein Strom von Eingabedateien.
Von Stream
Es ist ein Strom von Ausgabedateien. Vererbung ist eine Vorstellung, die stark in objektorientierter Programmierung verwendet wird, z. B. in C ++, wo einige Klassen die Eigenschaften anderer Klassen annehmen. Die Vorfahren werden dann durch die Einbeziehung neuer Merkmale zu Spezialisierungen von sich selbst.
Wenn Stream -Klasse
Ein Ifstream kann auf die gleiche Weise wie ein iStream behandelt werden, was es ist, was es ist.
Der Stream -Klasse
Auf die gleiche Weise wie IfStreams funktioniert, jedoch mit Ausgabe anstelle von Eingaben, ein Ofstream ist ein Ausgabedateistrom. Ein Ofstream wird auf die gleiche Weise wie Cout verwendet, nachdem er konstruiert, geöffnet und verifiziert wurde, keine Fehler.
IOS -Klasse
Aus dieser Klasse stammten alle Stream -Klassen ab. Eingangs- und Ausgangsströme sind zwei verschiedene Typen.
Es definiert die Stream -Teile, die unabhängig vom Eingangs- oder Ausgangsstatus des Streams in der iOS -Basis sind.
Im Gegensatz zu den Mitgliedern, die in der iOS -Basis diskutiert werden, werden die Mitglieder, die von den Vorlagenparametern abhängen, in diesem Teil beschrieben.
Stream (Eingabe)
Aufgrund der Komplexität der iOstream -Bibliothek können wir sie nicht vollständig in diesen Lektionen abdecken. Wir werden jedoch die Funktionen hervorheben, die am meisten verwendet werden. In diesem Abschnitt werden wir uns die Eingangsklasse aus einer Vielzahl von Blickwinkeln ansehen (iStream).
Wir haben erfahren, dass der Extraktionsbetreiber (>>) verwendet wird, um die Daten aus einem Eingabestream zu erwerben.
IStream
In der C ++ - Programmiersprache wird der Eingabestream von der iStream -Klasse behandelt. Die Eingabe wird als eine Reihe von Zeichen gelesen und verstanden, die diese Eingabestream -Objekte verwenden. Der Eingang wird vom CIN behandelt.
Mitgliedsklassen
iStream :: Sentry
Eine Klasse, die viele Aufgaben ausführt und jedes Mal ein Eingabebereich ausgeführt wird. Sein Destruktor ist nicht erforderlich, um Maßnahmen auszuführen. Implementierungen können jedoch zusätzliche Start- oder Reinigungsaufgaben für den von allen Eingabeoperationen freigegebenen Stream ausführen, indem sie die Erstellung und Zerstörung von Sentry -Objekten verwenden.
Funktionen
iStream :: gcount
Gibt die Charakterzahl an, die aus der jüngsten nicht formatierten Eingabeaktion des Objekts erhalten wurde. Die nicht formatierten Eingangsverfahren- get, get, ignorieren, peek, lesen, lesen, Putback und Entlastung des Werts dieser Funktion verändern. Denken Sie jedoch daran, dass das Aufrufen von Peeks, Putback oder Unget keine Zeichen extrahiert. Infolgedessen wird die Anzahl immer 0 zurückkehren.
iStream :: GET
Das einzelne Zeichen nimmt einen Zeichen aus dem Strom. Das Zeichen wird entweder als Wert des Arguments festgelegt oder zurückgegeben (erste Signatur) (zweite Signatur).
C -String: Wenn das abgrenzende Zeichen vorhanden ist, wird es nicht aus der Eingabebuchsequenz entfernt als das folgende Zeichen, das aus dem Stream abgerufen werden soll, wenn er vorhanden ist.
iStream :: GetLine
Entfernt Zeichen aus dem Stream als nicht formatierte Eingabe und speichert sie als C-String in der Variablen „S“, bis das extrahierte Zeichen zum abnehmenden Charakter wird oder „n“ Zeichen in 'S' geschrieben wurden. Zusätzlich hört die Methode auf, Zeichen zu extrahieren, wenn sie das Ende der Datei erreicht.
Innen erstellt die Funktion ein Objekt, bevor er auf die Eingabesequenz zugreift. Schließlich tötet es das Objekt vor der Rückkehr ab und extrahiert Zeichen aus seinem zugehörigen Stream -Puffer -Objekt (vorausgesetzt, alles ist in Ordnung), als würde man eine seiner Mitgliedsmethoden ausführen, SBUMPC oder SGETC.
iStream :: Ignorieren
Die Zeichen stammen aus der Eingabebuchsequenz und werden nacheinander verworfen, bis entweder „n“ Zeichen herausgenommen wurden oder einer Vergleich gleich dem Delim vergleichbar ist. Wenn das Ende der Datei erreicht ist. Die Funktion legt das Flag „Eofbit“ fest, wenn es diesen Punkt zu früh erreicht (bevor Nzeichen extrahiert oder Delim entdeckt).
Vor dem Zugriff auf die Eingabesequenz konstruiert die Funktion ein Sentry -Objekt intern (mit Noskipws ist wahr). Schließlich tötet es das Sentry -Objekt vor der Rückkehr ab und extrahiert Zeichen aus seinem zugehörigen Stream -Puffer -Objekt (vorausgesetzt, alles ist in Ordnung), als würde man eine seiner Mitgliedsmethoden ausführen: SBUMPC oder SGETC.
iStream :: Operator >>
Der Extraktionsoperator (>>) wendet diesen Bediener auf einen Eingangsstrom an. Es hat zu viele Mitglieder als Funktion.
Arithmetischer Typ
Zeichen werden aus dem Stream herausgenommen und nacheinander analysiert, um einen Wert des richtigen Typs darzustellen, der dann als Wert von „Val“ gespeichert wird. Vor dem Zugriff auf die Eingabesequenz konstruiert die Funktion ein Sentry -Objekt intern (Noskipws ist falsch). Wenn alles gut überprüft, dann läuft Num. Das Wachungsobjekt wird letztendlich zerstört, bevor es geht.
Die Funktion erzeugt intern ein Sentry -Objekt, bevor die Eingabesequenz gelesen wird. Sie wird als formatierte Eingabe angesehen. Schließlich tötet es das Sentry -Objekt vor der Rückkehr ab und extrahiert Zeichen aus seinem zugehörigen Stream -Puffer -Objekt (vorausgesetzt, alles ist in Ordnung), als ob eine seiner Mitgliedsmethoden, SBUMPC oder SGETC, ausgeführt wird.
Manipulatoren
Der PF (*this) wird aufgerufen, wobei PF ein Manipulator sein könnte. Manipulatoren sind Routinen, die besonders aufgerufen werden sollen, wenn dieser Bediener aufgerufen wird. Die Eingangssequenz wird von diesem Verfahren nicht beeinflusst und es werden keine Zeichen extrahiert.
iStream :: Putback
Der wiederhergestellte Zeichen versucht, den Cursor ein Zeichen im Stream nach unten zu bewegen, so dass das letzte aus dem Stream abgerufene Zeichen erneut durch Eingabeberäte extrahiert werden kann.
Vor dem Zugriff auf die Eingabesequenz konstruiert die Funktion ein Sentry -Objekt intern. Anschließend ruft es Sputbackc (c) auf seinem zugehörigen Stream -Puffer -Objekt auf (falls gut). Das Wachungsobjekt wird letztendlich zerstört, bevor es geht.
iStream :: Lesen
Lesen Sie einen Datenblock:
Die 'n' Charaktere werden aus dem Strom entnommen und dann in dem Array gespeichert, auf das "S" verweist, auf die angezeigt wird. Diese Funktion repliziert lediglich einen Datenblock, ohne den Inhalt der Daten zu überprüfen oder am Ende ein Nullzeichen hinzuzufügen.
Innerhalb der Funktion wird zuerst ein Sentry -Objekt erstellt, bevor die Eingabebereich zugegriffen wird. Schließlich tötet es das Sentry -Objekt vor der Rückkehr ab und extrahiert Zeichen aus seinem zugehörigen Stream -Puffer -Objekt (vorausgesetzt, alles ist in Ordnung), als würde man eine seiner Mitgliedsmethoden ausführen: SBUMPC oder SGETC.
Die Anrufen der Mitgliederzahl gibt die Gesamtzahl der Zeichen zurück, die diese Funktion ordnungsgemäß gelesen und gespeichert hat.
iStream :: Readsome
Diese Funktion hängt von den inneren Arbeiten des spezifischen Stream-Puffer-Objekts ab, das mit dem Stream verbunden ist und dessen Verhalten für Standardklassen weitgehend implementiert ist.
Innerhalb der Funktion wird zuerst ein Sentry -Objekt erstellt, bevor die Eingabebereich zugegriffen wird. Dann (falls erfolgreich) ruft es die Mitgliedsfunktion im Stream Buffer -Objekt auf, um zu bestimmen, wie viele Zeichen jetzt verfügbar sind, bevor sie „SBUMPC“ aufgerufen werden, um diese Anzahl von Zeichen (oder SGETC) zu extrahieren, um sie zu extrahieren. Das Wachungsobjekt wird letztendlich zerstört, bevor es geht.
iStream :: Seekg
Die Position in der Eingangsleitung bestimmt, wo das folgende Zeichen aus dem Eingangsstrom gezogen wird. Vor dem Lesen der Eingabesequenz konstruiert die Funktion intern ein Sentry -Objekt. Dann (wenn OK) wird einer von zwei Aufrufen des entsprechenden Stream -Puffer -Objekts: Pubseekpos (1) oder Pubseekoff (2), (falls vorhanden). Schließlich löscht es den Wachposten aus und geht ab.
iStream :: synchronisieren
Richten Sie den Eingangspuffer aus:
Bringt die kontrollierte Eingangssequenz des verknüpften Stream -Puffer in Synchronisation ein. Die spezifische Implementierung des mit dem Stream verbundenen Stream -Puffer -Objekts bestimmt die Einzelheiten des Vorgangs.
iStream :: Tellg
Erhalten Sie die Position der Eingabesequenz:
Es gibt die Position des aktuellen Zeichens im Eingangsstrom. Die Funktion gibt dann -1 zurück. Wenn das Mitglied fehlschlägt, gibt es wahr zurück.
Es gibt rdbuf ()-> pubrseekoff zurück, wenn nicht (0, cur, in). Das Wachungsobjekt wird letztendlich zerstört, bevor es geht.
iStream :: Unget
Zeichen entfernen:
Versucht, den Cursor einen Zeichen im Strom nach unten zu bewegen.
Nicht-Mitglied
Operator >> (iStream)
Der Extraktionsbetreiber (>>) bietet mit dieser Aktion formatierte Eingabe, wenn sie auf einen Eingangsstrom angewendet werden.
Ein Zeichen: Die Zeichensequenz nimmt das nächste Zeichen daraus heraus und speichert sie als Wert von „C“. Der Prozess des Extrahierens von Zeichen aus IS und das Speichern von S als C-String, stoppt (wenn die Breite nicht Null ist), wenn ein Whitespace-Zeichen auftritt oder (width () -1) Zeichen extrahiert wurden.
Extraktion von RValue: Ermöglicht das Extrahieren aus RValue -istream.
Beispiel 1
In diesem Fall haben wir untersucht, wie wir einen Wert vom Benutzer erhalten und ihn dann als Ergebnis auf dem Bildschirm anzeigen können.
#enthalten
Verwenden von Namespace STD;
int main ()
int no;
Cout<<"Please enter a number ";
Cin >> nein;
Cout<<"The entered value is: " << no << "\n";
Wir würden die Header -Datei einschließen. Als nächstes verwenden wir den Namespace 'STD' im Standard -Namespace. Wir würden die Funktion main () nennen. Eine Variable mit dem Namen "Nein" wird innerhalb dieser Methode deklariert. Der Datentyp „int“ wird für diese Variable dargestellt. Der Begriff "int" ist die Abkürzung einer Ganzzahl. Danach wird die Anweisung "Cout" verwendet. Dieser Befehl druckt die Zeile.
Der Benutzer gibt einen Zufallswert ein, nachdem dieser Text auf dem Bildschirm angezeigt wurde. Dann wäre die Erklärung "CIN" verwendet worden. Dieser Befehl erfordert, dass der Benutzer den Wert angibt. Die eingegebene Nummer des Benutzers wird in einer Variablen gespeichert. Der vom Benutzer bereitgestellte Wert wird auf dem Bildschirm mit dem Befehl "Cout" angezeigt.
Beispiel 2
In diesem Fall sehen wir, wie wir einen Namen vom Benutzer erhalten und ihn dann auf dem Bildschirm als Ergebnis anzeigen.
#enthalten
Verwenden von Namespace STD;
int main ()
Zeichenname [125];
Cout << "Enter your name" << endl;
Cin >> WS;
CIN.getline (name, 125);
Cout << name << endl;
Rückkehr 0;
Wir würden die Header -Datei integrieren . Als nächstes werden wir den Standard -Namespace als "std" verwenden. Wir würden die Main () -Funktion aufrufen. Innerhalb dieser Methode werden wir eine Variable deklarieren. Diese Variable enthält den Datentyp "char". Dann wird die Erklärung "Cout" verwendet. Dieser Befehl zeigt den Text "Geben Sie Ihren Namen" auf dem Bildschirm an. Nachdem der Benutzer diesen Text auf dem Bildschirm angezeigt hat, gab der Benutzer einen beliebigen Namen ein. Dann würden wir die "CIN" -Schüree nutzen.
Dieser Befehl nimmt den Wert vom Benutzer ab. Der angegebene Name würde in einer Variablen 'WS' gespeichert werden. Hier würden wir wieder den Befehl "CIN" verwenden. In diesem Befehl wird die Funktion getline () angewendet. Diese Funktion enthält den Parameter, der den vom Benutzer eingegebenen Namen und die Länge des Namens enthält. Der Befehl "Cout" wird verwendet, um den vom Benutzer angegebenen Namen anzuzeigen. Um den Code zu beenden, wird der Befehl 'return 0' verwendet.
Abschluss
Zuerst haben wir darüber gesprochen, was C ++ - Isttrream -Funktionen sind. Dann beobachten wir mehrere Funktionen und wichtige Definitionen, die erwähnt wurden. In diesem Artikel haben wir verschiedene Codes ausgeführt, die eine Vielzahl von iStream -Funktionen enthalten. Im ersten Code nehmen wir eine beliebige Nummer vom Benutzer und zeigen diese Nummer auf dem Bildschirm an. Im zweiten hat der Benutzer den Namen eingegeben und diesen Namen auf dem Bildschirm gedruckt.