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/cpp/iterator/ostream_iterator/ostream_iterator

Spec-Zone.ru

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