Manipulatoren


Mnipulatoren sind Operatoren, die mit dem Einfügeoperator << eingesetzt werden, um die Art, wie Daten angezeigt werden, abzuändern - oder zu manipulieren. Wir werden hier zwei der gebräuchlichsten betrachten: endl und setw.

Der Manipulator endl

Die letzte cout-Anweisung im Programm CIRCAREA endet mit einem unbekannten Wort: endl. Dies ist ein Manipulator, der bewirkt, daß ein Zeilenvorschub in den Datenstrom eingefügt wird. Er hat dieselbe Wiekung wie das einzelne Zeichen '\n', ist aber vielleicht ein wenig deutlicher.

Der Manipulator setw

Sie können sich jedem durch cout angezeigten Wert als Einnahme eines Feldes vorstellen: Ein imaginärer Rahmen mit einer bestimmten Breite. Das Vorgabefeld ist gerade breit genug, den Wert aufzunehmen. Das heißt, die Ganzzahl 547 wird ein Feld mit einer Breite von drei Zeichen einnehmen und die Zeichenkette »pajamas« ein Feld, das sieben breit ist.

// width1.cpp // Veranschaulicht die Notwendigkeit das Gebrauchs des Manipulators setw #include <iostream.h> void main() { long pop1=2425785, pop2=47, pop3=9761; cout << "LOCATION " << "POP." << endl << "Portcity " << pop1 << endl << "Hightown " << pop2 << endl << "Lowville " << pop3 << endl; }

Hier ist die Bildschirmausgabe des Programms:

LOCATION POP. Portcity 2425785
Hightown 47
Lowville 9761

Unglücklicherweise ist die ausgabe WIDTHT nicht gerade ideal. Es ist sehr schwierig, die Zahlen miteinander zu vergleichen. Es wäre besser, wenn sie alle rechtsbündig untereinander aufgelistet würden.

Es folgt eine Variante dieses Progrmms, WIDTH", ds den Manipulator setw einsetzt, um dieses Propleme zu beseitigen, indem es die Feldbreiten für Namen und Zahlen festlegt:

// width2.cpp // Veranschaulicht den Manipulator setw #include <iostream.h> #include <iomanip.h> // Für setw void main() { long pop1=2425785, pop2=47, pop3=9761; cout << setw(8) << "LOCATION" << setw(12) << "POPULATION" << endl << setw(8) << "Portcity" << setw(12) << pop1 << endl << setw(8) << "Hightown" << setw(12) << pop2 << endl << setw(8) << "Lowville" << setw(12) << pop3 << endl; }


10