Teil 1: Grundlagen


Ausgabestream cout

Die Ausgabe auf die Standardausgabe, dies ist in der Regel der Bildschirm, erfolgt mittels des Ausgabestreams cout. Die allgemeine Syntax für die Ausgabe mittels cout lautet:

std::cout << AUSGABE1 [ << AUSGABE2 ...];

Damit der Compiler aber den Ausgabestream cout kennt, muss vor der main() Funktion die Präprozessor-Direktive #include <iostream> stehen. Die Ausgabe selbst erfolgt dann mit der Anweisung std::cout.

// Datei iostream einbinden
#include <iostream>
int main ()
{
    std::cout << ...;
}

Anstelle bei jeder Ausgabe mittels cout das Präfix std:: anzugeben, kann nach der #include-Anweisung die nachfolgende using-Anweisung angegeben werden.

using std::cout;

// Datei iostream einbinden
#include <iostream>
// using Anweisung
using std::cout;

int main ()
{
    cout << ...;
}

Ausgabe Text und Zeichen

Um einen Text, auch als String bezeichnet, auszugegeben, wird dieser in Anführungszeichen eingeschlossen. Für die Ausgabe eines einzelnen Zeichens wird anstelle der Anführungszeichen das Zeichen in Hochkommas eingeschlossen.

Am Ende einer Ausgabe erfolgt kein automatischer Zeilenvorschub. Damit ein nachfolgender Text in einer neuen Zeile beginnt, ist eine entsprechende Escape-Sequenz oder der Manipulator std::endl in den Ausgabestream einzufügen.

// IO-Stream Datei einbinden
#include <iostream>
// cout und endl aus std Namensraum
using std::cout;
using std::endl;

// Das Programm
int main ()
{
    // Ausgabe eines Strings mit Zeilenvorschub
    cout << "Aber Hallo!" << endl;
    // Ausgabe mehrerer Strings
    cout << "Mein " << " erstes"
         << " Programm";
    // Einzelne Zeichen ausgeben
    cout << '!' << '?';
    // und fertig!
}

Escape-Sequenzen

Für die Ausgabe von nicht-druckbaren Zeichen, wie z.B. ein Zeilenvorschub oder ein Tabulator, werden sogenannte Escape-Sequenzen verwendet. Escape-Sequenzen beginnen immer mit einem Backslash-Zeichen \, gefolgt von einem ASCII-Zeichen, das die auszuführende 'Operation' beschreibt.

Die nachfolgende Tabelle enthält eine Übersicht über alle verfügbaren Escape-Sequenzen.

Escape-Sequenz
Ausgabe von
\a
Alarmton
\b
Backspace
\n
Zeilenvorschub
\r
Return (Zeilenanfang
\f
Formfeed
\t
horizontaler Tabulator
\v
vertikaler Tabulator
\\
Das Zeichen \
\"
Anführungszeichen
\'
Hochkomma
\xhhh
1- bis 3-stellige Hexadezimalzahl
\ooo
1- bis 3-stellige Okatalzahl

Ausgabe von Daten

Um numerische Daten auszugeben, werden diese, genauso wie Strings, mit dem Operator << an das Ausgabestream-Objekt cout übergeben. Innerhalb einer cout-Anweisung dürfen Strings und Daten beliebig gemischt auftreten.

// IO-Stream Datei einbinden
#include <iostream>
// cout aus std Namensraum
using std::cout;

// Das Programm
int main ()
{
    // Auszugebende Daten
    auto anyVal = 10;
    auto byteVal = (char)66;
    auto floatVal = 1.23f;
    // Gemischte Ausgabe von Text und Daten
    cout << "int-Datum: " << anyVal << " float-Datum: "
         << floatVal << '\n';
    // Ausgabe von char-Daten
    cout << "char-Datum: " << byteVal << '\n';
    cout << "char-Datum als Wert: " << static_cast<int>(byteVal);
    // und fertig!
}

Stören Sie sich bitte im Augenblick nicht an den ersten drei Anweisungen in der obigen Funktion main(). Hier werden 3 Variablen für die Ausgabe definiert und initialisiert. Mehr zur Definition von Variablen im nächsten Kapitel.

Dezimale, hexadezimale und oktale Ausgabe

Um eine Ganzzahl als Hexadezimal- oder Oktal-Zahl auszugeben, stehen sogenannte Manipulatoren zur Verfügung, die an der entsprechenden Stelle in den Ausgabestream eingefügt werden.

Manipulator
Ausgabebasis
std::dec
dezimal (Basis 10)
std::hex
hexadezimal (Basis 16)
std::oct
oktal (Basis 8)

// IO-Stream Datei einbinden
#include <iostream>
// cout und hex-Manipulator aus std Namensraum
using std::cout;
using std::hex;

// Das Programm
int main ()
{
    // Auszugebende Daten
    auto var = 10;
    // Zahlenbasis mit ausgeben
    cout << std::showbase; // Wird gleich noch beschrieben
    cout << " Dez: " << var;
    cout << " Hex: " << hex << var;
    cout << " Okt: " << std::oct << var;
    cout << " Zahl: " << var;
}

Damit bei der Ausgabe die Zahlenbasis ersichtlich wird, sollte der Manipulator std::showbase mit in den Ausgabestream einfügt werden (siehe Beispiel oben). Die ausgegebenen Werte erhalten dann folgende Kennungen:

Zahlensystem
Kennung
dezimal
keine Kennung
hexadezimal
0x oder 0X
oktal
0 (Null)

Manipulatoren

Außer den eben vorgestellten Manipulatoren dec, hex und oct stehen unter anderem noch die Manipulatoren setbase(...), setw(...), setfill(...), setprecision(...), fixed und scientific zur Verfügung, welche ebenfalls im Namensraum std liegen. Wenn einer dieser Manipulatoren eingesetzt wird, muss die Präprozessor-Directive #include <iomanip> zusätzlich im Programm mit angegeben werden. Mehr zu diesen Manipulatoren finden Sie im C++ Buch oder auch im Internet (z.B. unter https://en.cppreference.com/w/).



Copyright © cpp-tutor.de
Impressum &Datenschutz