std::ostreambuf_iterator<CharT,Traits>::ostreambuf_iterator

来自cppreference.com
 
 
迭代器库
迭代器概念
迭代器原语
算法概念与工具
间接可调用概念
常用算法要求
工具
迭代器适配器
流迭代器
迭代器定制点
迭代器操作
(C++11)
(C++11)
范围访问
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
 
(1)
ostreambuf_iterator( streambuf_type* buffer ) throw();
(C++11 前)
ostreambuf_iterator( streambuf_type* buffer ) noexcept;
(C++11 起)
(2)
ostreambuf_iterator( ostream_type& stream ) throw();
(C++11 前)
ostreambuf_iterator( ostream_type& stream ) noexcept;
(C++11 起)
1) 构造迭代器,将私有的 streambuf_type* 成员设为 buffer 并将 failed() 标志设为 falsebuffer 是空指针时行为未定义。
2)ostreambuf_iterator(stream.rdbuf())

参数

stream - 拥有的 rdbuf() 会被此迭代器访问的输出流
buffer - 此迭代器要访问的输出流缓冲

示例

#include <iostream>
#include <fstream>
#include <iterator>
 
int main()
{
    std::basic_filebuf<char> f;
    f.open("test.txt", std::ios::out);
 
    std::ostreambuf_iterator<char> out1(&f);
 
    std::ostreambuf_iterator<wchar_t> out2(std::wcout);
 
    *out1 = 'a';
    *out2 = L'a';
}

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 112 C++98 要求"实参不能为空"应用到了重载 (2) 改为应用到重载 (1)
P2325R3 C++20 因为 C++20 迭代器必须是 default_initializable 的而提供了默认构造函数 与该要求一同移除