std::ostream_iterator
| Definiert in Header <iterator> |
||
| template< class T, class CharT = char, |
(bis C++17) | |
| template< class T, class CharT = char, |
(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
|
| ||||
Zeiger
|
void | ||||
Referenz
|
void | ||||
char_type
|
CharT
| ||||
traits_type
|
Traits
| ||||
ostream_type
|
std::basic_ostream<CharT, Traits> |
|
Die Member-Typen |
(bis C++17) |
[bearbeiten] Member functions
| konstruiert einen neuen ostream_iterator (public member function) | |
destruiert einen ostream_iterator(public member function) | |
| schreibt ein Objekt in die zugehörige Ausgabesequenz (public member function) | |
| no-op (public member function) | |
| no-op (public member function) |
[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) | |
| Eingabe-Iterator, der aus std::basic_istream liest (Klassenvorlage) | |
| (Library Fundamentals TS v2) |
Ein Ausgabeliterator, der sukzessive Elemente in einen Ausgabestrom schreibt und benachbarte Elemente durch ein Trennzeichen trennt (Klassentemplate) |