C++ istream-Funktionen

C Istream Funktionen



Der Begriff „Stream“ in C++ beschreibt den Zeichenfluss zwischen Programm-Thread und I/O. C++-Stream-Klassen werden benötigt, um Aktionen auf IO-Devices und Dateien ein- und auszugeben. Diese Klassen dienen der Verwaltung der Ein- und Ausgabe des Programms und haben eine bestimmte Funktionalität.

Stream-Klassenhierarchie

Eine C++-Klasse besteht aus Methoden, die zum Verwalten und Steuern der darin enthaltenen Daten erforderlich sind.

Float, Doubles und Classes sind ähnliche Datentypen wie int. Eine eindeutige Variable mit einer Klasse als Datentyp wird als C++-Objekt bezeichnet. Die vorgegebenen Sonderobjekte „cin“ und „cout“ haben verschiedene Klassen als Datentypen.







Die Daten, die in „cout“ geschrieben oder von „cin“ gelesen werden, sind Beispiele für Datenflüsse in oder aus Programmen in C++. Derzeit ziehen wir die folgenden vier Klassen für diese in Betracht:



Streamen Sie es
Dieser Eingangsstrom kann jedem beliebigen Zweck dienen. Ein Beispiel für einen Istream ist cin.



Ostrom
Es ist ein Ausgabestrom mit mehreren Verwendungen. Ostreams kommen in den Formen von cout und cin vor.





Wenn Stream
Es ist ein Strom von Eingabedateien.

Von Strom
Es ist ein Strom von Ausgabedateien. Vererbung ist ein Begriff, der in der objektorientierten Programmierung stark verwendet wird, beispielsweise in C++, wo einige Klassen die Eigenschaften anderer Klassen übernehmen, die bereits erstellt wurden. Die Vorfahrenklassen werden dann durch die Einbeziehung neuer Merkmale zu Spezialisierungen ihrer selbst.



Wenn Stream-Klasse
Ein ifstream kann genauso behandelt werden wie ein istream, was er auch ist.

Von Stream-Klasse
Auf die gleiche Weise wie ifstreams funktioniert, aber mit Ausgabe statt Eingabe, ist ein ofstream ein Ausgabedateistream. Ein ofstream wird auf die gleiche Weise wie cout verwendet, nachdem es erstellt, geöffnet und auf Fehlerfreiheit überprüft wurde.

Ios-Klasse
Von dieser Klasse stammen alle Stromklassen ab. Eingabe- und Ausgabeströme sind zwei verschiedene Arten.

Es definiert die Stream-Teile, die unabhängig vom Eingabe- oder Ausgabestatus des Streams in der ios-Basis sind.

Im Gegensatz zu den Mitgliedern, die in der ios-Basis besprochen werden, werden in diesem Teil die Mitglieder beschrieben, die von den Vorlagenparametern abhängen.

Strom (Eingabe)
Aufgrund der Komplexität der iostream-Bibliothek können wir sie in diesen Lektionen nicht vollständig behandeln. Wir werden jedoch die Funktionen hervorheben, die am häufigsten verwendet werden. In diesem Abschnitt betrachten wir die Eingabeklasse aus verschiedenen Blickwinkeln (istream).

Wir haben gelernt, dass der Extraktionsoperator (>>) verwendet wird, um die Daten aus einem Eingabestrom zu erfassen.

STROM

In der Programmiersprache C++ wird der Eingabestrom von der istream-Klasse verarbeitet. Die Eingabe wird unter Verwendung dieser Eingabestromobjekte als eine Reihe von Zeichen gelesen und verstanden. Die Eingabe erfolgt über das cin.

Mitgliedsklassen

istream::Sentry
Eine Klasse, die viele Aufgaben ausführt und jedes Mal, wenn eine Eingabeprozedur durchgeführt wird. Sein Destruktor muss keine Aktionen ausführen. Implementierungen können jedoch zusätzliche Start- oder Bereinigungsaufgaben auf dem von allen Eingabeoperationen gemeinsam genutzten Strom ausführen, indem sie die Erstellung und Zerstörung von Sentry-Objekten verwenden.

Funktionen

istream::gcount
Gibt die Zeichenanzahl an, die von der letzten unformatierten Eingabeaktion des Objekts erhalten wurde. Die unformatierten Eingabeprozeduren – get, getline, ignore, peek, read, read some, putback und unget – ändern den von dieser Funktion zurückgegebenen Wert. Beachten Sie jedoch, dass beim Aufrufen von peeks, putback oder unget keine Zeichen extrahiert werden. Als Ergebnis gibt die Zählung immer 0 zurück.

istream::get
Das einzelne Zeichen nimmt ein Zeichen aus dem Strom. Das Zeichen wird entweder als Wert des Arguments gesetzt oder zurückgegeben (erste Signatur) (zweite Signatur).

C-String: Wenn das Trennzeichen vorhanden ist, wird es nicht aus der Eingabesequenz entfernt, sondern als folgendes Zeichen beibehalten, das aus dem Stream abgerufen wird, falls es vorhanden ist.

istream::getline
Entfernt Zeichen als unformatierte Eingabe aus dem Stream und speichert sie als C-String in der Variablen „s“, bis das extrahierte Zeichen zum Trennzeichen wird oder „n“ Zeichen in „s“ geschrieben wurden. Darüber hinaus stoppt die Methode das Extrahieren von Zeichen, wenn das Ende der Datei erreicht wird.

Intern erstellt die Funktion ein Objekt, bevor sie auf die Eingabesequenz zugreift. Schließlich beendet es das Objekt, bevor es zurückkehrt, und extrahiert Zeichen aus seinem zugehörigen Stream-Buffer-Objekt (vorausgesetzt, alles ist in Ordnung), als würde es eine seiner Member-Methoden ausführen, sbumpc oder sgetc.

istream::ignorieren
Zeichen werden aus der Eingabesequenz genommen und eines nach dem anderen verworfen, bis entweder „n“ Zeichen herausgenommen wurden oder man gleich mit dem Trennzeichen vergleicht. Wenn das Ende der Datei erreicht ist, hält die Funktion außerdem die Zeichenextraktion an. Die Funktion setzt das „eofbit“-Flag, wenn sie diesen Punkt zu früh erreicht (bevor sie n Zeichen extrahiert oder delim entdeckt).

Vor dem Zugriff auf die Eingabesequenz baut die Funktion intern ein Sentry-Objekt auf (wobei noskipws true sein wird). Schließlich beendet es das Sentry-Objekt, bevor es zurückkehrt, und extrahiert Zeichen aus seinem zugehörigen Stream-Buffer-Objekt (vorausgesetzt, alles ist in Ordnung), als würde es eine seiner Member-Methoden ausführen: sbumpc oder sgetc.

istream::operator>>
Der Extraktionsoperator (>>) wendet diesen Operator auf einen Eingabestrom an. Es hat zu viele Mitglieder als Funktion.

Arithmetischer Typ

Zeichen werden aus dem Stream herausgenommen und sequentiell geparst, um einen Wert des richtigen Typs darzustellen, der dann als Wert von „val“ gespeichert wird. Vor dem Zugriff auf die Eingabesequenz erstellt die Funktion intern ein Sentry-Objekt (noskipws ist falsch). Wenn alles gut läuft, wird num get::get ausgeführt, um die Extraktions- und Parsing-Prozesse abzuschließen, während die internen Status-Flags des Streams geändert werden. Das Wachobjekt wird letztendlich zerstört, bevor es geht.

Die Funktion generiert intern ein Sentry-Objekt, bevor sie die Eingabesequenz liest, sie wird als formatierte Eingabe angesehen. Schließlich beendet es das Sentry-Objekt, bevor es zurückkehrt, und extrahiert Zeichen aus seinem zugehörigen Stream-Buffer-Objekt (vorausgesetzt, alles ist in Ordnung), als würde es eine seiner Member-Methoden ausführen, sbumpc oder sgetc.

Manipulatoren

Das pf (*this) wird aufgerufen, wobei pf ein Manipulator sein könnte. Manipulatoren sind Routinen, die speziell dafür geschaffen wurden, aufgerufen zu werden, wenn dieser Operator aufgerufen wird. Die Eingabereihenfolge bleibt von diesem Vorgang unberührt und es werden keine Zeichen extrahiert.

istream::putback
Das wiederhergestellte Zeichen versucht, den Cursor im Strom um ein Zeichen nach unten zu bewegen, so dass das letzte aus dem Strom abgerufene Zeichen noch einmal durch Eingabeoperationen extrahiert werden kann.

Vor dem Zugriff auf die Eingabesequenz baut die Funktion intern ein Sentry-Objekt auf. Dann ruft es sputbackc(c) für sein zugeordnetes Stream-Buffer-Objekt auf (wenn es gut ist). Das Wachobjekt wird letztendlich zerstört, bevor es geht.

istream::lesen
Lesen Sie einen Datenblock:

Die ‚n‘-Zeichen werden aus dem Stream genommen und dann in dem Array gespeichert, auf das „s“ zeigt. Diese Funktion repliziert lediglich einen Datenblock, ohne den Inhalt der Daten zu prüfen oder am Ende ein Nullzeichen hinzuzufügen.

Innerhalb der Funktion wird zunächst ein Sentry-Objekt erstellt, bevor auf die Eingabesequenz zugegriffen wird. Schließlich beendet es das Sentry-Objekt, bevor es zurückkehrt, und extrahiert Zeichen aus seinem zugehörigen Stream-Buffer-Objekt (vorausgesetzt, alles ist in Ordnung), als würde es eine seiner Member-Methoden ausführen: sbumpc oder sgetc.

Der Aufruf von member count gibt die Gesamtzahl der Zeichen zurück, die diese Funktion richtig gelesen und gespeichert hat.

istream::readsome
Diese Funktion ist abhängig von der inneren Funktionsweise des spezifischen Stream-Pufferobjekts, das mit dem Stream verknüpft ist, dessen Verhalten für Standardklassen weitgehend implementierungsdefiniert ist.

Innerhalb der Funktion wird zunächst ein Sentry-Objekt erstellt, bevor auf die Eingabesequenz zugegriffen wird. Dann (falls erfolgreich) ruft es die Member-Funktion im Avail-Objekt des Stream-Puffers auf, um zu bestimmen, wie viele Zeichen jetzt verfügbar sind, bevor „sbumpc“ aufgerufen wird, um bis zu dieser Anzahl von Zeichen (oder sgetc) zu extrahieren. Das Wachobjekt wird letztendlich zerstört, bevor es geht.

istream::seekg
Die Position in der Eingabezeile bestimmt, wo das folgende Zeichen aus dem Eingabestrom gezogen wird. Vor dem Lesen der Eingabesequenz konstruiert die Funktion intern ein Sentry-Objekt. Dann (wenn OK) macht es einen von zwei Aufrufen an das entsprechende Strompufferobjekt: pubseekpos (1) oder pubseekoff (2), (falls vorhanden). Schließlich löscht es den Wachposten aus und verschwindet.

istream::sync
Richten Sie den Eingabepuffer aus:

Bringt die gesteuerte Eingabesequenz des verknüpften Stream-Puffers in Synchronisierung. Die spezifische Implementierung des mit dem Stream verbundenen Stream-Pufferobjekts bestimmt die Besonderheiten der Operation.

istream::telg
Erhalten Sie die Position der Eingabesequenz:

Es gibt die Position des aktuellen Zeichens im Eingabestrom an. Die Funktion gibt dann -1 zurück. Wenn der Member fehlschlägt, wird true zurückgegeben.

Es gibt rdbuf()->pubseekoff zurück, wenn nicht (0,cur,in). Das Wachobjekt wird letztendlich zerstört, bevor es geht.

istream::unget
Zeichen entfernen:

Versucht, den Cursor im Stream um ein Zeichen nach unten zu bewegen, damit das letzte aus dem Stream abgerufene Zeichen erneut durch Eingabeoperationen extrahiert werden kann.

Nicht-Mitglied

Betreiber>> (istream)
Der Extraktionsoperator (>>) stellt mit dieser Aktion eine formatierte Eingabe bereit, wenn er auf einen Eingabestream angewendet wird.

Ein Zeichen: Die Zeichenfolge nimmt das nächste Zeichen heraus und speichert es als Wert von „c“. Der Prozess des Extrahierens von Zeichen aus is und des Speicherns in s als C-String stoppt (wenn die Breite nicht null ist), wenn ein Leerzeichen gefunden wird oder (Breite ()-1) Zeichen extrahiert wurden.

Extrahieren von rvalue: ermöglicht das Extrahieren von istream-Objekten aus rvalue, was dasselbe Ergebnis hat wie das Extrahieren von lvalues: Es ruft is>>Val auf.

Beispiel 1

In diesem Fall würden wir untersuchen, wie wir einen Wert vom Benutzer erhalten und ihn dann als Ergebnis auf dem Bildschirm anzeigen können.

#include
verwenden Namensraum Standard ;
int hauptsächlich ( )
{
int Nein ;
cout << 'Bitte gebe eine Nummer ein ' ;
Essen >> Nein ;
cout << 'Der eingegebene Wert ist: ' << Nein << ' \n ' ;
}

Wir würden die Header-Datei einschließen. Als nächstes verwenden wir den Namensraum „std“ im Standard-Namensraum. Wir würden die Funktion main() nennen. Innerhalb dieser Methode wird eine Variable namens „no“ deklariert. Für diese Variable wird der Datentyp „int“ dargestellt. Der Begriff „int“ ist die Abkürzung für eine ganze Zahl. Danach wird die 'cout'-Anweisung verwendet. Dieser Befehl druckt die Zeile.

Der Benutzer gibt einen beliebigen Wert ein, nachdem dieser Text auf dem Bildschirm angezeigt wurde. Dann wäre die „cin“-Anweisung verwendet worden. Dieser Befehl erfordert, dass der Benutzer den Wert angibt. Die eingegebene Nummer des Benutzers würde in einer Variablen gespeichert. Der vom Benutzer bereitgestellte Wert wird mit dem Befehl „cout“ auf dem Bildschirm angezeigt.

Beispiel 2

In diesem Fall würden wir sehen, wie wir einen beliebigen Namen vom Benutzer erhalten und ihn dann als Ergebnis auf dem Bildschirm anzeigen.

#include
verwenden Namensraum Standard ;

int hauptsächlich ( )

{

verkohlen Name [ 125 ] ;
cout << 'Gib deinen Namen ein' << Ende ;


Essen >> ws ;

Essen . getline ( Name, 125 ) ;

cout << Name << Ende ;

Rückkehr 0 ;

}

Wir würden die Header-Datei einbinden. Als nächstes verwenden wir den Standard-Namespace als „std“. Wir würden die Funktion main() aufrufen. Innerhalb dieser Methode deklarieren wir eine Variable. Diese Variable enthält den Datentyp „char“. Dann wird die 'cout'-Anweisung verwendet. Dieser Befehl zeigt den Text „Geben Sie Ihren Namen ein“ auf dem Bildschirm an. Nachdem dieser Text auf dem Bildschirm angezeigt wurde, würde der Benutzer einen beliebigen Namen eingeben. Dann würden wir die 'cin'-Anweisung verwenden.

Dieser Befehl übernimmt den Wert vom Benutzer. Der bereitgestellte Name würde in einer Variablen „ws“ gespeichert. Hier würden wir wieder den Befehl „cin“ verwenden. Innerhalb dieses Befehls 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.

Fazit

Zuerst haben wir darüber gesprochen, was C++-istream-Funktionen sind. Dann beobachten wir mehrere erwähnte Funktionen und wichtige Definitionen. 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. Bei der zweiten gab der Benutzer den Namen ein und druckte diesen Namen auf dem Bildschirm aus.