C++ Grundlegende Eingabe/Ausgabe
Die C++-Standardbibliothek bietet eine umfangreiche Sammlung von Eingabe-/Ausgabefunktionen, die wir in späteren Kapiteln vorstellen werden. In diesem Kapitel werden die grundlegendsten und gebräuchlichsten E/A-Operationen in der C++-Programmierung erläutert.
C++-E/A erfolgt in Streams, bei denen es sich um Bytefolgen handelt. Wenn der Bytestrom von einem Gerät (z. B. einer Tastatur, einem Laufwerk, einer Netzwerkverbindung usw.) in den Speicher fließt, spricht man vonEingabeoperationen. Wenn der Bytestrom vom Speicher zu einem Gerät (z. B. einem Bildschirm, Drucker, Laufwerk, einer Netzwerkverbindung usw.) fließt, spricht man vonAusgabeoperationen。
E/A-Bibliotheks-Headerdatei
Die folgenden Header-Dateien sind in der C++-Programmierung wichtig.
| Header-Datei | Funktionen und Beschreibungen |
|---|---|
| <iostream> | Diese Datei definiertcin、cout、cerrundclogObjekte, die jeweils dem Standardeingabestream, dem Standardausgabestream, dem ungepufferten Standardfehlerstream und dem gepufferten Standardfehlerstream entsprechen. |
| <iomanip> | Diese Datei verwendet sogenannte parametrisierte Stream-Manipulatoren (wiesetwundsetprecision), um Dienste zu deklarieren, die für die Durchführung standardisierter E/A nützlich sind. |
| <fstream> | Diese Datei deklariert Dienste für benutzergesteuerte Dateiverarbeitung. Wir werden ihre Details im Kapitel über Dateien und Streams besprechen. |
Standardausgabestream (cout)
Vordefinierte ObjektecoutJaiostreamEine Instanz der Klasse. Das cout-Objekt ist mit dem Standardausgabegerät „verbunden“, normalerweise einem Bildschirm.coutwird in Verbindung mit dem Stream-Einfügeoperator << verwendet, wie unten gezeigt:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Value of str is : Hello C++
Der C++-Compiler wählt den geeigneten Stream-Einfügeoperator entsprechend dem Datentyp der auszugebenden Variable aus, um den Wert anzuzeigen. Der Operator << ist überladen, um Datenelemente integrierter Typen (Ganzzahl, Gleitkommazahl, double, string und Zeiger) auszugeben.
Der Stream-Einfügeoperator << kann mehrmals in einer Anweisung verwendet werden, wie im obigen Beispiel gezeigt,endlWird verwendet, um am Ende einer Zeile einen Zeilenumbruch hinzuzufügen.
Standardeingabestream (cin)
Vordefinierte ObjektecinJaiostreamEine Instanz der Klasse. Das cin-Objekt ist mit dem Standardeingabegerät verbunden, normalerweise einer Tastatur.cinwird in Verbindung mit dem Stream-Extraktionsoperator >> verwendet, wie unten gezeigt:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, wird der Benutzer aufgefordert, einen Namen einzugeben. Wenn der Benutzer einen Wert eingibt und die Eingabetaste drückt, werden die folgenden Ergebnisse angezeigt:
请输入您的名称: cplusplus 您的名称是: cplusplus
Der C++-Compiler wählt den geeigneten Stream-Extraktionsoperator entsprechend dem Datentyp des einzugebenden Werts aus, extrahiert den Wert und speichert ihn in der angegebenen Variablen.
Der Stream-Extraktionsoperator >> kann mehrmals in einer Anweisung verwendet werden. Wenn mehrere Datenelemente eingegeben werden müssen, kann die folgende Anweisung verwendet werden:
cin >> name >> age;
Dies entspricht den folgenden zwei Anweisungen:
cin >> name; cin >> age;
Standardfehlerstrom (cerr)
Vordefinierte ObjektecerrJaiostreamEine Instanz der Klasse. Das cerr-Objekt ist mit dem Standardausgabegerät verbunden, normalerweise ebenfalls einem Bildschirm, abercerrDas Objekt ist ungepuffert, und jede Stream-Einfügung in cerr wird sofort ausgegeben.
cerrwird ebenfalls in Verbindung mit dem Stream-Einfügeoperator << verwendet, wie unten gezeigt:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Error message : Unable to read....
Standard-Log-Stream (clog)
Vordefinierte ObjekteclogJaiostreamEine Instanz der Klasse. Das clog-Objekt ist an das Standardausgabegerät angeschlossen, normalerweise ebenfalls ein Bildschirm, aberclogDas Objekt ist gepuffert. Das bedeutet, dass jede Stream-Einfügung in clog zuerst im Puffer gespeichert wird und erst ausgegeben wird, wenn der Puffer gefüllt oder geleert wird.
clogwird auch zusammen mit dem Stream-Einfügeoperator << verwendet, wie unten gezeigt:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Error message : Unable to read....
Durch diese kleinen Beispiele können wir die Unterschiede zwischen cout, cerr und clog nicht unterscheiden, aber beim Schreiben und Ausführen großer Programme werden die Unterschiede zwischen ihnen sehr deutlich. Daher lehrt uns eine gute Programmierpraxis, den cerr-Stream zum Anzeigen von Fehlermeldungen zu verwenden und andere Protokollmeldungen mit dem clog-Stream auszugeben.
Weitere Erweiterungen