Der Writer
Der Writer legt fest, auf welche Art die Umgebungen der Elemente geschrieben werden. Es gibt drei Umgebungen:
- Das Präfix (prefix): wird vor allen Elementen eines Arrays geschrieben.
- Der Element-Schluss (after element): wird nach jedem Element geschrieben (mit Ausnahme des letzten Elements).
- Das Suffix (suffix): wird nach allen Elementen eines Arrays geschrieben.
Zur Formatierung dieser Umgebungen müssen die Writer-Klassen drei Funktionen bereitstellen:
void write_prefix( streamOut) void write_after_element( streamOut) void write_suffix( streamOut)
Man kann zwar auch eine eigene Writer-Klasse erstellen, doch dürften die beiden bereits vorhandenen Klassen ausreichend sein:
- basic_range_writer ist der Default-Writer. Er schreibt keine Präfixe und ein Komma nach jedem Element, wobei das Suffix aus einer Leerstelle besteht. Er schreibt Elemente wie: John, James, Corina .
- range_writer erlaubt das Verwenden von Präfix, Element-Schluss und Suffix. Zum Beispiel können die folgenden Elemente geschrieben werden: [John, James, Corina] oder {John}, {James}, {Corina}.
Die Transformation
Die Transformation ermöglicht es, jedes einzelne Element zu transformieren. Wie bereits erwähnt, kann es sich dabei um einen Funktor oder eine Funktion handeln, wobei zwei Parameter erforderlich sind: der Stream, in den geschrieben wird, und das Objekt, das geschrieben wird. Die in Listing A gezeigte Default-Transformation schreibt das Element unverändert.
Man kann aber auch eigene, komplexere Transformationen erstellen. Zum Beispiel könnte man eine Transformation einrichten, die jedem Element ein Präfix entsprechend seinem Index zuweist, wie in Listing B dargestellt.
Mit Listing B können folgende Arrays geschrieben werden:
- [1] John, [2] James, [3] Corina‘ (PrefixByIndex-Transformation)
- ‚{ [1] John and [2] James and [3] Corina }‘ (PrefixByIndex-Transformation plus ein Writer ( „{ „, “ und „, “ }“) )
Neueste Kommentare
Noch keine Kommentare zu Schreiben und Formatieren von Bereichen und Containern in C++
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.