# std::ostream_iterator<T,CharT,Traits>::ostream_iterator

< cpp‎ | iterator‎ | ostream iterator

ostream_iterator( ostream_type& stream, const CharT* delim ); | (1) |
ostream_iterator( ostream_type& stream ); | (2) |

1) 以 `stream` 为关联流并以 `delim` 为分隔符构造迭代器。
2) 以 `stream` 为关联流并以空指针为分隔符构造迭代器。

### 参数

stream | - | 此迭代器所访问的输出流
delim | - | 在每次输出后插入流的空终止字符串

### 示例

    #include <iostream>
    #include <iterator>
    #include <algorithm>
    #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 | 应用于 | 出版时的行为 | 正确行为
--- | --- | --- | ---
P2325R3 | C++20 | 由于 C++20 迭代器必须为 `default_initializable` 提供了默认构造函数 | 与该要求一同移除