Wir teilen die oben beschriebene Lösung in mehrere Teilschritte auf, um jeden einzeln zu betrachten:
- Um Punkt 1 zu erfüllen, stehen uns zwei Funktionen zur Verfügung: range für einen Bereich und container für einen Container.
- Um Punkt 2 zu erfüllen, benutzen wir ein Writer-Objekt.
- Um Punkt 3 zu erfüllen, benutzen wir eine Transformation, d.h. einen Funktor bzw. eine Funktion mit zwei Parametern: dem Stream, in den geschrieben wird, und dem Wert, der geschrieben wird. (Anmerkung: Ein Funktor ist ein Objekt, das sich wie eine Funktion verhält. Mit anderen Worten: es besitzt einen überladenen Operator <<.) Die Funktion bzw. der Funktor wird den Wert transformieren und in den Stream schreiben.
- Punkt 4 wird durch Überladen erfüllt. Wir verfügen über eine Formatter-Funktion, die ausgehend von den gegebenen Parametern bei Bedarf Defaultwerte bereitstellt.
Außerdem haben wir verschiedene Funktionen, die Objekte zurückgeben, die einen Bereich oder Container schreiben. Für jedes dieser Objekte haben wir den Operator << überladen, der den zugrundeliegenden Bereich oder Container in den Ziel-Stream schreiben wird.
Zum Beispiel erstellt der folgende Code ein Objekt, das den Container aNames schreiben kann. Der Operator << wird auf dieses angewandt, und schreibt dann den Container aNames in std::cout.
typedef std::list< std::string> StringsArray; StringsArray aNames; aNames.push_back( "John"); aNames.push_back( "James"); aNames.push_back( "Corina"); // will print the array of names std::cout << container( aNames) << std::endl ;
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.