Namensräume
Varianten
Aktionen

std::experimental::ostream_joiner

Von cppreference.com
 
 
 
 
 
Definiert im Header <experimental/iterator>
template<

    class DelimT,
    class CharT = char,
    class Traits = std::char_traits<CharT>
>

class ostream_joiner;
(Library Fundamentals TS v2)

std::experimental::ostream_joiner ist ein Single-Pass LegacyOutputIterator, der aufeinanderfolgende Objekte in das std::basic_ostream-Objekt schreibt, für das er konstruiert wurde, mittels operator<<, getrennt durch ein Trennzeichen. Das Trennzeichen wird zwischen jedem der beiden geschriebenen Objekte in den Ausgabestrom geschrieben. Die Schreiboperation erfolgt, wenn der Iterator (egal ob dereferenziert oder nicht) zugewiesen wird. Das Inkrementieren des ostream_joiner ist eine No-op.

In einer typischen Implementierung sind die einzigen Datenelemente von ostream_joiner ein Zeiger auf den zugehörigen std::basic_ostream, das Trennzeichen und ein bool-Mitglied, das angibt, ob der nächste Schreibvorgang für das erste Element in der Sequenz ist.

Im Vergleich zu std::ostream_iterator druckt ostream_joiner die Trennzeichensequenz um eins weniger oft und ist nicht nach dem Typ des zu druckenden Objekts templatiert.

Inhalt

[edit] Member types

Mitgliedertyp Definition
char_type CharT
traits_type Traits
ostream_type std::basic_ostream<CharT, Traits>
value_type void
difference_type void
Zeiger void
Referenz void
iterator_category std::output_iterator_tag

[edit] Member functions

konstruiert einen neuen ostream_joiner
(public member function) [edit]
(Destruktor)
(implizit deklariert)
destruiert einen ostream_joiner
(public member function) [edit]
schreibt ein Objekt in die zugehörige Ausgabesequenz
(public member function) [edit]
no-op
(public member function) [edit]
no-op
(public member function) [edit]

[edit] Non-member functions

erstellt ein ostream_joiner-Objekt, wobei die Template-Typargumente aus den Funktionsargumenten abgeleitet werden
(function template) [edit]

[edit] Example

#include <algorithm>
#include <experimental/iterator>
#include <iostream>
#include <iterator>
 
int main()
{
    int i[] = {1, 2, 3, 4, 5};
    std::copy(std::begin(i),
              std::end(i),
              std::experimental::make_ostream_joiner(std::cout, ", "));
}

Ausgabe

1, 2, 3, 4, 5

[edit] See also

Ausgabe-Iterator, der in std::basic_streambuf schreibt
(Klassenvorlage) [bearbeiten]
Ausgabe-Iterator, der in std::basic_ostream schreibt
(Klassenvorlage) [bearbeiten]
Eingabe-Iterator, der aus std::basic_istream liest
(Klassenvorlage) [bearbeiten]