Namespaces
Variants

std::ostream_iterator

Von de.cppreference.net
 
 
Iteratorenbibliothek
Iteratorkonzepte
Iteratoren-Grundlagen
Algorithmuskonzepte und Dienstprogramme
Indirekt aufrufbare Konzepte
Allgemeine Algorithmusanforderungen
(C++20)
(C++20)
(C++20)
Dienstprogramme
(C++20)
Iteratorenadapter
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 aufeinanderfolgende Objekte des Typs T in das std::basic_ostream-Objekt schreibt, für das er konstruiert wurde, unter Verwendung von operator<<. Optionaler Trennzeichen-String wird nach jedem Schreibvorgang in den Ausgabestrom geschrieben. Der Schreibvorgang wird ausgeführt, wenn dem Iterator (unabhängig davon, ob er dereferenziert wird oder nicht) ein Wert zugewiesen wird. Das Inkrementieren des std::ostream_iterator ist ein Nullvorgang.

In einer typischen Implementierung sind die einzigen Datenelemente von std::ostream_iterator ein Zeiger auf den zugehörigen std::basic_ostream und ein Zeiger auf das erste Zeichen des Trennzeichen-Strings.

Beim Schreiben von Zeichen ist std::ostreambuf_iterator effizienter, da es den Overhead der Erstellung und Zerstörung des Sentry-Objekts einmal pro Zeichen vermeidet.

Mitgliedertypen

Mitgliedstyp Definition
iterator_category std:: output_iterator_tag
value_type void
difference_type

void

(bis C++20)

std::ptrdiff_t

(seit C++20)
pointer void
reference 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 Vererbung von std:: iterator < std:: output_iterator_tag , void , void , void , void > erhalten werden.

(bis C++17)

Memberfunktionen

Konstruiert einen neuen ostream_iterator
(öffentliche Elementfunktion)
zerstört einen ostream_iterator
(öffentliche Elementfunktion)
schreibt ein Objekt in die assoziierte Ausgabesequenz
(öffentliche Elementfunktion)
No-Op
(öffentliche Elementfunktion)
No-Op
(öffentliche Elementfunktion)

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,

Siehe auch

Ausgabe-Iterator, der in std::basic_streambuf schreibt
(Klassentemplate)
Eingabe-Iterator, der aus std::basic_istream liest
(Klassentemplate)
(library fundamentals TS v2)
ein Ausgabe-Iterator, der aufeinanderfolgende Elemente in einen Ausgabestrom schreibt und benachbarte Elemente mit einem Trennzeichen trennt
(Klassentemplate)