Namensräume
Varianten
Aktionen

std::ostream_iterator

Von cppreference.com
< cpp‎ | iterator
 
 
Iterator-Bibliothek
Iterator-Konzepte
Iterator-Primitive
Algorithmus-Konzepte und Hilfsprogramme
Indirekte aufrufbare Konzepte
Gemeinsame Algorithmus-Anforderungen
(C++20)
(C++20)
(C++20)
Dienstprogramme
(C++20)
Iterator-Adapter
Bereichszugriff
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
 
Definiert in Header <iterator>
template< class T,

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

    : public std::iterator<std::output_iterator_tag, void, void, void, void>
(bis C++17)
template< class T,

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

class ostream_iterator;
(seit C++17)

std::ostream_iterator ist ein Single-Pass LegacyOutputIterator, der sukzessive Objekte vom Typ T in das std::basic_ostream Objekt schreibt, für das er konstruiert wurde, mittels operator<<. Ein optionaler Trennstrang wird nach jeder Schreiboperation in den Ausgabestrom geschrieben. Die Schreiboperation wird durchgeführt, wenn der Iterator (egal ob dereferenziert oder nicht) zugewiesen wird. Das Inkrementieren des std::ostream_iterator ist ein No-Op.

In einer typischen Implementierung sind die einzigen Datenmember von std::ostream_iterator ein Zeiger auf den zugehörigen std::basic_ostream und ein Zeiger auf das erste Zeichen im Trennstrang.

Beim Schreiben von Zeichen ist std::ostreambuf_iterator effizienter, da er den Overhead für die Konstruktion und Zerstörung des Sentry-Objekts pro Zeichen vermeidet.

Inhalt

[bearbeiten] Member-Typen

Mitgliedertyp Definition
iterator_category std::output_iterator_tag
value_type void
difference_type

void

(bis C++20)

std::ptrdiff_t

(seit C++20)
Zeiger void
Referenz void
char_type CharT
traits_type Traits
ostream_type std::basic_ostream<CharT, Traits>

Die Member-Typen iterator_category, value_type, difference_type, pointer und reference müssen durch Ableitung von std::iterator<std::output_iterator_tag, void, void, void, void> erhalten werden.

(bis C++17)

[bearbeiten] Member functions

konstruiert einen neuen ostream_iterator
(public member function) [bearbeiten]
destruiert einen ostream_iterator
(public member function) [bearbeiten]
schreibt ein Objekt in die zugehörige Ausgabesequenz
(public member function) [bearbeiten]
no-op
(public member function) [bearbeiten]
no-op
(public member function) [bearbeiten]

[bearbeiten] Beispiel

#include <iostream>
#include <iterator>
#include <numeric>
#include <sstream>
 
int main()
{
    std::istringstream str("0.11 0.22 0.33 0.44");
 
    std::partial_sum(std::istream_iterator<double>(str),
                     std::istream_iterator<double>(),
                     std::ostream_iterator<double>(std::cout, ", "));
    std::cout << '\n';
}

Ausgabe

0.11, 0.33, 0.66, 1.1,

[bearbeiten] Siehe auch

Ausgabe-Iterator, der in std::basic_streambuf schreibt
(Klassenvorlage) [bearbeiten]
Eingabe-Iterator, der aus std::basic_istream liest
(Klassenvorlage) [bearbeiten]
(Library Fundamentals TS v2)
Ein Ausgabeliterator, der sukzessive Elemente in einen Ausgabestrom schreibt und benachbarte Elemente durch ein Trennzeichen trennt
(Klassentemplate)