Mit C++ Bereiche und Container schreiben und formatieren

Unterteilen wir die oben beschriebene Lösung in mehrere Schritte und untersuchen jeden für sich:

  • Für die Erfüllung von Punkt 1 stehen uns zwei Funktionen zur Verfügung: range für einen Bereich und container für einen Container.
  • Für die Erfüllung von Punkt 2 haben wir ein Writer-Objekt.
  • Für die Erfüllung von Punkt 3 werden wir eine Transformation benutzen – einen Funktor oder eine Funktion, die zwei Parameter annimmt: den Stream, in den geschrieben wird, und den Wert, der geschrieben wird. (Anmerkung: Ein Funktor ist ein Objekt, das sich wie eine Funktion verhält; mit anderen Worten: es verfügt über einen überladenen Operator <<.) Die Funktion bzw. der Funktor wird den Wert transformieren und in den Stream schreiben.
  • Punkt 4 wird durch Überladen erreicht. Wir verfügen über eine Formatter-Funktion, die, basierend auf den jeweiligen Parametern, bei Bedarf Standardwerte bereitstellt.

    Außerdem haben wir verschiedene Funktionen, die Objekte ausgeben, welche einen Bereich oder Container schreiben. Für jedes dieser Objekte haben wir den Operator << überladen, der den zugrunde liegenden Bereich oder Container in den Ziel-Stream schreiben wird.

    Der folgende Code erstellt beispielsweise ein Objekt, das den Container aNames schreiben kann. Der Operator << wird darauf angewandt, welcher wiederum den Container aNames in std::cout schreibt.

    
    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 Mit C++ Bereiche und Container schreiben und formatieren

Kommentar hinzufügen

Schreibe einen Kommentar

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