Die neuen Streams sind in der Header-Datei <iostream> folgendermaßen
deklariert:
cout - Standardausgabe (basiert auf dem C-Standard-Stream stdout) cerr - Standardfehlerausgabe (basiert auf dem C-Standard-Stream stderr) clog - Standardfehlerausgabe (wie cerr, nur gepuffert) cin - Standardeingabe (basiert auf dem C-Standard-Stream stdin)
Damit Sie die in der C++-Standardbibliothek definierten globalen Bezeichner
zum Namensbereich std direkt verwenden können, müssen Sie die Direktive
using namespace std;
angeben (gewöhnlich am Anfang der Datei hinter der Angabe der Header-Dateien.)
Ohne Angabe des Namensbereichs std könnten Sie statt
cout << "Hallo Welt!\n";
nur mit dem Namensbereich std und dem Bereichsoperator :: eine Ausgabe
über den Stream cout machen:
std::cout << "Hallo Welt!\n";
2.1.2 Ausgabe mit »cout«
Damit die Ausgabe realisiert wird, wurde der Operator <<(Shift-Operator) »überladen«,
wodurch er für die Speicherobjekte dieser Klasse einen neuen Sinn erhält.
cout << "Hallo Welt!\n";
Mit solch einer Anweisung schieben sie den String »HalloWelt!« in die Standardausgabe
(cout alias stdout). Mit dem Operator << zeigen sie an, wohin der Text geschoben wird.
Natürlich können sie dahinter noch einen weiteren Text »schieben« lassen:
//Bspw. einen Text über zwei Zeilen cout << "Hallo Welt!\n" << "Noch eine Zeile\n";
Sie können sich dies gerne wie bei einer Laufschrift vorstellen. Abgeschlossen
wird die Ausgabe mit einem Semikolon.
Bei den Datentypen muss man nicht mehr C-typisch auf das richtige Formatzeichen
achten, sondern hier ist cout clever genug, den Typ dieser Daten selbst zu
erkennen, wie Sie dies bereits im Abschnitt zu den Basisdatentypen feststellen
konnten. cout kann also alle elementaren Datentypen ausgeben.
2.1.3 Ausgabe mit »cerr«
cerr funktioniert im Grunde ähnlich wie cout und sendet seine Ausgabe auch
auf den Bildschirm. Gewöhnlich verwendet man den Fehlerausgabe-Stream cerr,
wenn man den Standardausgabe-Stream cout umgeleitet hat oder wenn man nur Fehler
in eine Datei leiten will. Nur so kann man sicherstellen, dass nur noch die Fehlermeldung
auf dem Bildschirm ausgegeben werden.
Entscheidend ist auch zu wissen, dass cerr ungepuffert arbeitet, also die Ausgabe
hier ungepuffert erfolgt. Aus Effizienzgründen ist die Ausgabe auf cout gewöhnlich
gepuffert, das bedeutet, dass das System erst einmal x Zeichen zwischenspeichert und diese
dann alle auf einmal ausgegeben werden.
2.1.4 Ausgabe mit »cin«
Wollen Sie etwas von der Standardeingabe (Tastatur) einlesen, so erfolgt dies mit
cin un dem Operator >>. Ein Beispiel hierfür:
#include <iostream> using namespace std; int main(void) { int wert; cout << "Bitte eine Zahl eingeben: "; cin >> wert; cout << "Die Eingabe war: " << wert << '\n'; return 0; }
Das Programm bei der Ausführung:
Bitte eine Zahl eingeben: 4 Die Eingabe war: 4
Der Wert wird hierbei von cin in die Variable wert geschoben.
In der Praxis sollten Sie sich aber nicht darauf verlassen, dass der Anwender
schon das richtige eingeben wird. Hierzu sollte man immer den Rückgabewert
von cin und des Operators >> überprüfen. Bei einer richtigen Angabe wird wahr
und bei einer falschen Angabe falsch zurückgegeben.
In einem Beispiel sieht die Überprüfung wie folgt aus:
if( ! (cin >> wert) ) { cerr << "Fehler bei der Eingabe!\n"; } else { cout << "Die Eingabe war " << wert << "\n"; }
by Jakob_N