Streams in C++: erweiterte Kapitel
Manipulatoren mit Argumenten
- Manipulationen mit Argumenten werden analog denen ohne Argumente
indirekt über einen Funktionsaufruf realisiert
- gerufene Funktion
nimmt jetzt neben der Referenz auf einen Stream zusätzlich noch das
Manipulator-Argument, Beispiel:
ios& width(ios& ros, int n) {
ros.width(n);
return ros;
}
- da operator<< neben dem Stream nur noch ein Argument haben kann,
muß Manipulation mit einem Argument abgebildet werden auf Streamausgabe
eines temporären Objektes, welches oben beschriebene Funktion und das
Manipulator-Argument speichert
- bei einer Manipulation wie z.B.
cout << setw(10);
könnte auf folgende Weise ein temporäres Objekt geschaffen werden:
ios& width(ios& ros, int n) {
ros.width(n);
return ros;
}
smanip<int> setw(int n) {
return smanip<int>(&width, n);
}
im Beispiel ist das temporäre Objekt vom Typ smanip<int>:
instanziiertes Template, wobei Typparameter durch Typ des
Manipulatorargumentes ersetzt wurde