Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

2.3 Ausgaben mit cout

2.3 Ausgaben mit cout

Der modernere Ansatz unter C++, ist die Ausgabe mittels dem statischen Objekt "cout" (gesprochen C-Out). Ich habe lange damit gerungen, ob ich dieses Kapitel an dieser Stelle bringe, da hier ein Mechanismus benutzt wird, der erst ganz am Ende des Buches erklärt wird und ich Ihnen nahe gelegt habe, nichts zu benutzen, was Sie nicht zu 100% verstehen. Dennoch muss das Kapitel kommen, da man zum einen in der Literatur fast nur Ausgaben mit "cout" findet und es zum anderen für Anfänger leichter zu verstehen ist als "printf".

Das Schema sieht so aus: cin << <Variable>|<Wert> [<< <Variable>|<Wert> ...]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
					
#include <iostream>
using namespace std;

// ...

int iZahl = 15;

cout << "String ohne Platzhalter" << endl;
cout << "Zahl = " << iZahl << endl;
cout << "andere Zahl = " << 18 << endl;
cout << iZahl << " + " << iZahl << " = " << (iZahl + iZahl) << endl;
cout << (int)100;
					

Die Ausgabe sieht wieder so aus wie im vorletzten Beispiel, allerdings hat sich einiges am Quelltext getan. Zum einen benötigt man ein anderes Include und dann braucht man noch den Befehl "using namespace std". Letzteres ist wichtig, da man sonst vor jedes "cout" und "endl" noch "std::" schreiben müsste, was auf Dauer sehr nervig sein kann. Neu ist auch, dass ich keine Escape-Zeichen mehr benutze, was aber durchaus möglich ist. "\n" wurde beispielsweise mit "endl" ersetzt.

Der größte Unterschied liegt aber jetzt darin, dass man keine Ausgabefunktion benutzt, sondern das Objekt "cout" und das jede Ausgabe serialisiert, also der "<<" Operator benutzt wird. Man schiebt buchstäblich das Auszugebende in das Objekt rein und es kümmert sich um den Rest.

Es ist außerdem möglich, auch hier die Ausgaben zu formatieren. Dies sieht dann so aus.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
					
#include <iostream>
using namespace std;

// ...

cout << 1.5 << endl;
cout.width(4);
cout << 1.5 << endl;
cout.width(5);
cout << 1.5 << endl;
					

Ausgabe:

1.5
 1.5
   1.5
		

Zum manipulieren der Breite der Ausgabe, muss man also im Vorfeld eine extra Funktion aufrufen. Des Weiteren hat man keinerlei Einfluss auf die Darstellung von Nachkommastellen, denn da werden immer nur so viele Stellen angegeben, wie nötig. Es ist also nicht möglich "1,0" auszugeben.

Für welche Form der Ausgabe Sie sich entscheiden überlasse ich Ihnen, allerdings handelt man sich mit "cout" einige Nachteile ein bzw. man ist nicht mehr so flexibel. Wie gezeigt hat man keinen Einfluss auf Gleitkommazahlen, des Weiteren ist die Syntax nicht unbedingt übersichtlicher und man kann es nicht erreichen, dass eine Variable in einem anderen Format dargestellt wird. Hierfür muss man explizit ein Typecast benutzen. Der größte Kritikpunk ist allerdings der starre Aufbau der Ausgabe. Gerade wenn es um Internationalisierung (l14n) geht, also ein Programm Ausgaben in mehreren Sprachen haben soll, bekommt man zunehmend Schwierigkeiten. Feste Wörter kann man in Variablen speichern und die zusammen puzzeln. Soll aber in die Ausgabe noch ein dynamisch berechneter Wert einfließen, der im deutschen wo anders im Satz steht als im englischen, hat man schon mehr zu kämpfen. Aus diesen genannten Gründen, werde ich im weiteren Verlauf meines Buches nur die Funktion "printf" benutzen. Zudem werde ich Ihnen später noch weitere Funktionen zeigen, welche eine ähnliche Syntax benutzen wie "printf" und wenn Sie den Umgang dieser Funktion beherrschen, brauchen Sie sich an nichts Neues zu gewöhnen.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012