Spec-Zone.ru › C++

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API