Namespaces
Variants

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

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(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() フラグを false に設定する。 buffer がヌルポインタの場合の動作は未定義である。
2) ostreambuf_iterator ( stream. rdbuf ( ) ) と同じです。

パラメータ

stream - このイテレータが rdbuf() をアクセスする出力ストリーム
buffer - このイテレータがアクセスする出力ストリームバッファ

#include <fstream>
#include <iostream>
#include <iterator>
int main()
{
    const char* file = "test.txt";
    {
        std::basic_filebuf<char> f;
        f.open(file, std::ios::out);
        std::ostreambuf_iterator<char> out1(&f);
        *out1 = 'a'; // イテレータを介してファイルに書き込み
    }
    // ファイルから読み戻し
    char a;
    std::cout << ((std::ifstream{file} >> a), a) << std::endl;
    std::ostreambuf_iterator<wchar_t> out2{std::wcout};
    *out2 = L'b';
}

出力:

a
b

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 112 C++98 要件「引数はnullであってはならない」が
オーバーロード (2) に適用されていた
オーバーロード
(1) に適用される
P2325R3 C++20 デフォルトコンストラクタが提供されていた(C++20
イテレータは default_initializable でなければならないため)
要件と共に
削除された