C++ Grundlegende Eingabe/Ausgabe: Beispiel Cout, Cin, Cerr
Was sind Streams in C++?
C++ stellt Benutzern eine Reihe von Bibliotheken zur Verfügung, mit denen sie Eingabe-/Ausgabeaufgaben ausführen können. Diese Aufgaben werden in Form von Bytesequenzen ausgeführt, die allgemein als Streams bezeichnet werden.
Die Streams sind zweigeteilt:
Arten von Streams
- Eingabestrom: Hierbei handelt es sich um eine Art Stream, bei dem die Bytes von einem Gerät wie einer Tastatur zum Hauptspeicher fließen.
- Ausgabestrom: Dabei handelt es sich um eine Art Stream, bei dem die Bytes in die entgegengesetzte Richtung fließen, also vom Hauptspeicher zum Gerät, beispielsweise zum Bildschirm.
Wie funktionieren Streams?
C++ Streams funktionieren wie folgt:
- Zunächst wird ein Stream mit dem richtigen Typ initialisiert.
- Als nächstes sollten Sie angeben, wo die I / O erfolgt mithilfe von Get/Put-Zeigern.
- Nachdem Sie die richtige Position in einem Stream erreicht haben, können Sie Eingabe- und Ausgabeaufgaben mit den Operatoren >> bzw. << ausführen.
Funktionstabelle
Die folgenden Funktionen sind in der Headerdatei stream.h enthalten:
Klasse | Funktionen |
---|---|
Filebuf | Es setzt Dateipuffer zum Lesen/Schreiben. Es enthält die Funktionen close() und open() |
fstreambase | Es handelt sich um die Basisklasse für die Klassen ifstream, fstream und ofstream. Die Operationen sind für die Dateiströme gleich. |
ifstream | Es handelt sich um eine Eingabedatei-Stream-Klasse zum Bereitstellen von Eingabevorgängen. |
ofstream | Es handelt sich um eine Ausgabedatei-Stream-Klasse zum Bereitstellen von Ausgabevorgängen. |
fstream | Es handelt sich um eine Eingabe-/Ausgabe-Stream-Klasse. Sie unterstützt gleichzeitige Eingabe-/Ausgabevorgänge. |
C++ Headerdateien für Eingabe/Ausgabe
C++ bietet drei Bibliotheken mit Funktionen zur Durchführung grundlegender Ein-/Ausgabeaufgaben. Dazu gehören:
- Iostream: Es ist ein Akronym für Standard Input/Output Stream. Diese Header-Datei enthält Definitionen für Objekte wie cin/cout/cerr.
- Iomanip: Es ist ein Akronym für Input/Output Manipulators. Die Bibliothek verfügt über Funktionen, die zur Manipulation von Streams verwendet werden können. Es enthält Definitionen für Objekte wie setw, setprecision und andere.
- Fstream: Dies ist eine Header-Datei zur Beschreibung des Dateistreams. Es verarbeitet Daten, die aus einer Datei als Eingabe gelesen oder in eine Datei geschrieben werden (Ausgabe).
Die Schlüsselwörter cin und cout sind sehr beliebt in C++. Sie werden verwendet, um Eingaben entgegenzunehmen bzw. Ausgaben zu drucken. Um sie zu verwenden, müssen Sie die iostream-Headerdatei in Ihr Programm einbinden. Der Grund dafür ist, dass sie in dieser Headerdatei definiert sind. Wenn die iostream-Headerdatei nicht eingebunden wird, wird ein Fehler generiert. Dies ist auf einen Fehler des C++ Compiler, um die Bedeutung der Schlüsselwörter zu verstehen.
Die wichtigsten in der iostream-Headerdatei definierten Objekte sind cin, cout, cerr und clog. Lassen Sie uns darüber diskutieren.
std :: cout
Das cout-Objekt ist eine Instanz der iostream-Klasse. Es wird verwendet, um Ausgaben auf einem Standardausgabegerät zu erzeugen, was normalerweise der Bildschirm ist. Es wird zusammen mit dem Stream-Einfügungsoperator (<<) verwendet.
Beispiel
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Ausgang:
Hier ist ein Screenshot des Codes:
Code-Erklärung:
- Fügen Sie die iostream-Headerdatei ein, in der das Cout-Objekt definiert ist.
- Schließen Sie den std-Namespace ein, damit wir ihn bei Verwendung seiner Klassen nicht aufrufen müssen.
- Rufen Sie die Funktion main() auf. Der Programmcode sollte in seinen Hauptteil eingefügt werden. Die öffnende geschweifte Klammer { markiert den Anfang seines Körpers.
- Erstellen Sie eine Zeichenvariable mit dem Namen „Willkommen“, um die Zeichenfolge „Willkommen bei Guru99“ aufzunehmen.
- Drucken Sie den Wert der Zeichenfolge welcome auf der Konsole. Das endl ist ein C++ Schlüsselwort bedeutet Zeilenende. Es bewegt den Cursor, um mit dem Drucken des Textes in der nächsten Zeile zu beginnen.
- Das Programm muss bei erfolgreicher Ausführung einen Wert zurückgeben.
- Ende des Hauptteils der Funktion main().
std::cin
Das cin-Objekt ist eine Instanz der istream-Klasse. Es liest Eingaben vom Eingabegerät, der Tastatur. Es wird normalerweise zusammen mit dem Extraktionsoperator (>>) verwendet. Das Extraktionsobjekt ist dafür verantwortlich, über die Tastatur eingegebene Daten aus dem cin-Objekt zu extrahieren.
Beispiel
Das folgende Beispiel zeigt die Verwendung des Schlüsselworts cin in C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
Ausgang:
Hier ist ein Screenshot des Codes:
Code-Erklärung:
- Fügen Sie die iostream-Header-Datei in unser Programm ein. Das cin-Objekt wird in dieser Header-Datei definiert.
- Schließen Sie den std-Namespace ein, um seine Klassen zu verwenden. Sie müssen std nicht aufrufen, wenn Sie seine Klassen verwenden.
- Rufen Sie die Funktion main() auf. Der Programmcode sollte in seinen Hauptteil eingefügt werden.
- Der Beginn des Hauptteils des Programms.
- Deklarieren Sie eine ganzzahlige Variable benannte Nummer.
- Drucken Sie eine Meldung auf dem Bildschirm, die den Benutzer zur Eingabe einer Nummer auffordert.
- Lesen Sie den vom Benutzer an der Konsole eingegebenen Wert über die Tastatur ab.
- Drucken Sie den oben gelesenen Wert zusammen mit anderem Text auf der Konsole aus.
- Das Programm sollte einen Wert zurückgeben, wenn es erfolgreich ausgeführt wird.
- Ende des Körpers der Hauptfunktion.
std::cerr
Das cerr-Objekt bildet den Standardfehlerstrom zur Ausgabe von Fehlern in C++. Cerr ist eine Instanz der Klasse ostream. Das cerr-Objekt ist ungepuffert. Das heißt, es wird verwendet, wenn eine Fehlermeldung sofort angezeigt werden soll.
Da es ungepuffert ist, speichert es keine Fehlermeldung für eine spätere Anzeige. Es wird zusammen mit dem Stream-Einfügungsoperator (<<) verwendet.
Beispiel
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Ausgang:
Hier ist ein Screenshot des Codes:
Code-Erklärung:
- Fügen Sie die iostream-Header-Datei ein, in der das Cerr-Objekt definiert wurde.
- Schließen Sie den std-Namespace ein, damit wir ihn bei Verwendung seiner Klassen nicht aufrufen müssen.
- Rufen Sie die Funktion main() auf. Die Programmlogik sollte in den Hauptteil eingefügt werden. Die öffnende geschweifte Klammer markiert den Anfang des Funktionskörpers.
- Verwenden Sie das cerr-Objekt, um einen Fehler auf der Konsole auszugeben.
- Das Programm muss bei erfolgreicher Ausführung einen Wert zurückgeben.
- Ende des Körpers der Hauptfunktion.
std::clog
Das clog-Objekt ist eine Instanz der ostream-Klasse. Es wird verwendet, um Fehler auf der Standardanzeige, dem Monitor, anzuzeigen. Es ähnelt dem cerr-Objekt, ist aber gepuffert. Da es gepuffert ist, speichert es die Fehlermeldung im Puffer, bis der Puffer gefüllt/geleert ist. Es wird zusammen mit dem Stream-Einfügungsoperator (<<) verwendet.
Beispiel
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Ausgang:
Hier ist ein Screenshot des Codes:
Code-Erklärung:
- Einschließlich der iostream-Header-Datei, in der das Clog-Objekt definiert ist.
- Einschließlich des std-Namespace, damit wir seine Klassen verwenden können, ohne ihn aufzurufen.
- Aufruf der Funktion main(). Die Programmlogik sollte in den Hauptteil eingefügt werden. Das { markiert den Anfang des Funktionskörpers.
- Verwenden Sie das Clog-Objekt, um einen Fehler auf der Standardausgabe, dem Monitor, auszugeben.
- Das Programm muss bei erfolgreichem Abschluss einen Wert zurückgeben.
- Das Ende des Hauptteils der Funktion main().
Fehlerbehandlung mit IO-Streams
Um zu überprüfen, ob ein Stream gültig ist oder nicht, können Sie ihn als Booleschen Wert verwenden.
Hier ist ein Beispiel:
ifstream file( "myfile.txt" ); if ( ! file ) { cout << "File NOT opened!" << endl; }
Um weitere Details zum Stream-Status zu erhalten, können Sie diese Funktionen verwenden:
- good() – gibt true zurück, wenn alles in Ordnung ist.
- bad() – gibt true zurück, wenn ein schwerwiegender Fehler auftritt.
- fail() – gibt nach einem erfolglosen Stream-Vorgang „true“ zurück.
- eof()- gibt true zurück, wenn das Ende einer Datei erreicht wird.
Um festzustellen, ob ein bestimmter Lese-/Schreibvorgang fehlgeschlagen ist, testen Sie das Leseergebnis.
Um beispielsweise zu überprüfen, ob der Benutzer eine gültige Ganzzahl eingegeben hat, gehen Sie wie folgt vor:
int p; if ( cin >> p ) { cout << "Enter valid number" << endl; }
Zusammenfassung
- Die Eingabe- und Ausgabeaufgaben In C++ erfolgen über eine Bytefolge. Die Bytes werden als Streams bezeichnet.
- In einem Eingabestream fließen die Bytes vom Eingabegerät wie einer Tastatur zum Hauptspeicher.
- In einem Ausgabestream werden die Bytes vom Hauptspeicher dann an ein Ausgabegerät wie einen Monitor weitergeleitet.
- Das cin-Objekt ist eine Instanz der istream-Klasse. Es liest Eingaben von einem Eingabegerät wie der Tastatur.
- Das cout-Objekt ist eine Instanz der ostream-Klasse. Die Ausgabe erfolgt auf Ausgabegeräten wie dem Monitor.
- Das cerr-Objekt ist eine Instanz der ostream-Klasse. Es zeigt Fehlerobjekte auf dem Monitor an.
- Das Clog-Objekt ist eine Instanz der Ostream-Klasse. Es zeigt Fehlermeldungen auf Ausgabegeräten an.
- Das Clog-Objekt puffert Fehlermeldungen, das Cerr-Objekt hingegen nicht.