Schreiben und Formatieren von Bereichen und Containern in C++

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 ;
    
    

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Schreiben und Formatieren von Bereichen und Containern in C++

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *