std::ostream_iterator<T,CharT,Traits>::ostream_iterator
ostream_iterator( ostream_type& stream, const CharT* delim ); | (1) | |
ostream_iterator( ostream_type& stream ); | (2) |
Конструирует итератор с stream в качестве связанного потока, сохраняя адрес stream.
1) Использует
delim в качестве разделителя.
2) Использует нулевой указатель в качестве разделителя.
Параметры
| stream | - | выходной поток, к которому будет обращаться этот итератор |
| delim | - | строка символов с завершением нулем, которая будет вставлена в поток после каждого вывода |
Пример
#include <algorithm>
#include <iostream>
#include <iterator>
#include <numeric>
int main()
{
std::ostream_iterator<char> oo{std::cout};
std::ostream_iterator<int> i1{std::cout, ", "};
std::fill_n(i1, 5, -1);
*oo++ = '\n';
std::ostream_iterator<double> i2{std::cout, "; "};
*i2++ = 3.14;
*i2++ = 2.71;
*oo++ = '\n';
std::common_iterator<std::counted_iterator<std::ostream_iterator<float>>,
std::default_sentinel_t>
first{std::counted_iterator{std::ostream_iterator<float>{std::cout," ~ "}, 5}},
last{std::default_sentinel};
std::iota(first, last, 2.2);
*oo++ = '\n';
}Вывод:
-1, -1, -1, -1, -1, 3.14; 2.71; 2.2 ~ 3.2 ~ 4.2 ~ 5.2 ~ 6.2 ~
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющих поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Правильное поведение |
|---|---|---|---|
| LWG 1280 | C++98 |
stream хранилось напрямую | хранится его адрес вместо этого |
| P2325R3 | C++20 | конструктор по умолчанию был предоставлен как C++20 итераторы должны быть default_initializable | удален вместе с требованием |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/iterator/ostream_iterator/ostream_iterator