Die Ausgabeformatierung mit 'cout'

von: Ansgar Schiffler, 2005  (Dank an Stefan Högner)

zurück zu 'Die Programmiersprache C++'

 

Wenn Sie zum Beispiel eine Tabelle mit Dezimalzahlen ausgeben möchten, ist es wünschenswert, dass bei jeder Zahl die gleiche Anzahl an Nachkommastellen ausgegeben wird und dass alle Zahlen rechtsbündig ausgegeben werden. Hierzu ist die Ausgabe zu formatieren.

Wenn Sie den Ausgabebefehl 'cout' verwenden, müssen Sie zur Formatierung der  Ausgabe zunächst die Datei die Header-Datei  'iomanip.h' einbinden.

Mit 'setprecision' können Sie angeben, wie viele Stellen ausgegeben werden sollen. Wenn Sie 'setprecision(4)' wählen, wird die Zahl 41,4567 so ausgeben: 41,45. (auf dem Bildschirm ist an Stelle des Kommas ein Punkt zu sehen, da nicht die deutsche Zahlendarstellung verwendet wird). Es werden also nur die erste vier Stellen ausgegeben, unabhängig davon, wo sich das Komma befindet. Wenn die Zahl mehr als vier Stellen lang ist, wie zum Beispiel die Zahl 478.000, wird sie so ausgegeben: 4,78e+05, dies bedeutet: 4,78 * 105

Sie können aber auch festlegen, wie viele Stellen nach dem Komma ausgegeben werden sollen. Hierzu muss das Komma zunächst fixiert werden. Hierfür wird die Anweisung 'cout << setiosflags(0x1000);' verwendet. Jetzt wird mit 'setprecision' nicht mehr die Anzahl der Stellen, sondern die Anzahl der Nachkommastellen festgelegt. Auch wenn Sie nun die Zahl 5 ausgeben, erhalten Sie im Fall von vier Nachkommastellen auf dem Bildschirm: 5,0000. 

Wenn Sie nun keine weiteren Angaben machen und verschieden große Zahlen in einer Tabelle ausgeben, passiert das Folgende:

4,0000

12,0000

283,0000

1214,0000

 

Die Ausgabe erfolgt linksbündig und somit verschiebt sich das Komma. Dies können Sie verhindern, indem Sie mit 'setw' (set width') die Ausgabebreite vorgeben. Ist die auszugebende Zahl weniger breit, werden zunächst Leerzeichen ausgegeben, so dass Sie in einer Tabelle eine rechtsbündige Darstellung erhalten. Nur wenn die gewählte Breite für die darzustellende Zahl nicht groß genug ist, kommt es zu einer Verschiebung.

 

Sehen Sie sich das folgende Programm an. Es gibt die Umrechnung einer Celsius- in eine Fahrenheit- Temperatur aus und zusätzlich noch eine kleine Temperaturumrechnungstabelle. Führen Sie das Programm aus und experimentieren Sie ein wenig, indem Sie z.B. 'cout << setiosflags(0x1000);' aukommentieren, indem Sie die Parameter von 'setprecision' und 'setw' ändern. Dann werden Sie schnell den Dreh raus haben! 

 

Viel Spaß beim Probieren!    Das Programm herunterladen: Quellcode

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <iomanip.h>

void main(void)
{

float celsius;

clrscr();

cout << "\n\nBitte geben Sie eine Temperatur in Grad Celsius ein: ";
cin >> celsius;

cout << setiosflags(0x1000); 
// fixiert das Komma
cout << setprecision(4);        
  // gibt in Kombination mit fixem Komma
                                            
     // die Anzahl der Nachkommastellen an

cout <<"\n\n\n"<<setw(10)<< celsius<<" Grad Celsius entsprechen "
        <<setw(10)<< (9.0/5*celsius+32)<<" Grad Fahrenheit";

cout<<"\n\n Celsius        Fahrenheit\n\n";

for(int i = 0; i < 15; i++)
    {
    cout<<"\n"<<setw(12) <<celsius<< setw(15)<<(9.0/5.0*celsius+32.0);
    celsius += 20;
    }

getchar();
return;
}

zurück zu 'Die Programmiersprache C++'