Die Definition von Iostream in C++

Jinku Hu 12 Oktober 2023
Die Definition von Iostream in C++

In diesem Handbuch wird erläutert, wie Sie die grundlegende Eingabe-/Ausgabebibliothek in C++ verwenden.

Verwenden Sie den Header <iostream>, um globale Stream-Objekte in C++ einzuschließen

Die Input/Output-Bibliothek ist der Kernbestandteil der C++-STL, die von fast jedem realen Programm verwendet wird. Die C++-I/O-Operationen werden in Form von Streams abstrahiert, die man sich als generische Datensequenzen vorstellen kann. Eine Stream-Abstraktion wird unter Verwendung mehrerer geerbter Klassen implementiert und dem Benutzer als verschiedene benannte Objekte bereitgestellt, die auf bestimmte E/A-Operationen spezialisiert sind. Beachten Sie, dass die streambasierte E/A-Bibliothek als Ganzes verwendet werden kann, um Text auf der Konsole zu drucken oder Daten aus Dateien auf der Festplatte zu lesen/schreiben. Sie können sich die Streams-Bibliothek als das wichtigste Mittel für das C++-Programm vorstellen, um mit dem Dateisystem und den Geräten zu interagieren.

Die beiden wesentlichen Streamklassen sind istream und ostream, entsprechend den Streams, die zum Lesen und Schreiben der Daten verwendet werden. Diese Klassen stellen Operationen für Zeichenströme bereit. Es gibt vier globale Stream-Objekte, die häufig von Programmen verwendet werden, um Operationen wie das Aufnehmen von Benutzereingaben oder das Drucken von Fehlermeldungen durchzuführen. Diese Objekte sind:

  • cout: stellt einen Standardausgabestrom dar, der dem stdout in C entspricht.
  • cin : Dies ist der Standard-Input-Stream (entspricht stdin).
  • cerr: Dies ist der Standard-Fehlerstrom, der als ungepufferter Strom implementiert ist (entspricht stderr).
  • clog: Dies ist der Standard-Logging-Stream, der nicht das C-Äquivalent hat, und bietet die gepufferte Version von cerr.

Ein weiterer wichtiger Teil der I/O-Stream-Bibliothek sind Operatoren, die verwendet werden, um die Operationen zwischen verschiedenen Objekten zu verketten. Der Operator <<, auch Stream-Einfügungs-Operator genannt, schiebt die Daten in ein Stream-Objekt. Andererseits wird der Operator >> als Stream Extractor bezeichnet. Beachten Sie, dass diese Operatoren im Allgemeinen Shift-Operationen für arithmetische Typen ausführen, aber in diesem Fall als überladene Operatoren implementiert werden.

Im folgenden Beispiel zeigen wir Ihnen die grundlegende Verwendung der C++-Stream-basierten I/O-Klassen. Wir verwenden das cout-Objekt, um den string-Inhalt an die Konsole auszugeben. Da der cout einem Standardausgabestrom entspricht, verwenden wir den Einfügeoperator, um die Daten einzufügen, und sie werden normalerweise an die Konsole gedruckt. Beachten Sie, dass das Objekt endl Manipulator genannt wird, der ein Newline-Zeichen ausgibt und den Ausgabepuffer leert.

Es gibt verschiedene Arten von Stream-Manipulatoren, es gibt solche, die die Eingabe/Ausgabe wie endl modifizieren, und andere, die das Stream-Objekt zwingen, die Eingabe/Ausgabe anders zu interpretieren. Letztere beinhalten die Zahlenbasis-Manipulatoren wie: dec, hex und oct.

#include <iostream>
#include <string>

using std::cerr;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str1("what does iostream mean?");

  cout << str1 << endl;
  cout << str1 << " - " << str1 << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

what does iostream mean?
what does iostream mean? - what does iostream mean?

Wie im vorherigen Programm gezeigt, besteht die mächtigste Funktion von Stream-Operatoren und Objekten darin, mehrfach hintereinander zu verketten. In diesem Fall sehen wir, dass wir die Literalwerte mit anderen Variablen kombinieren können, um sie alle in einen cout-Stream zu verschieben. Als nächstes verwenden wir die Objekte cin und cerr, um die Benutzereingaben zu lesen und die gelesenen Daten auszudrucken.

Beachten Sie, dass das Objekt des zu lesenden Typs vorab als Float-Zahl x deklariert werden sollte. Eine weitere nützliche Eigenschaft von Einfüge-/Extraktionsoperatoren besteht darin, dass sie den Wert ungleich Null zurückgeben, wenn der Vorgang fehlgeschlagen ist. Alternativ können Sie die Memberfunktionen fail und bad verwenden, um zu überprüfen, ob das angegebene Stream-Objekt auf bestimmte Fehler gestoßen ist.

#include <iostream>
#include <string>

using std::cerr;
using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  float x;

  cout << "enter float: ";
  if (!(cin >> x)) {
    cerr << "error while reading the floating point value!" << endl;
    return EXIT_FAILURE;
  }
  cout << x;

  return EXIT_SUCCESS;
}

Ausgabe:

error while reading the floating point value!
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ IO