Namespaces
Variants

std::experimental:: ostream_joiner

From cppreference.net
ヘッダーで定義 <experimental/iterator>
template <

class DelimT,
class CharT = char ,
class Traits = std:: char_traits < CharT >
>

class ostream_joiner ;
(ライブラリ基盤仕様 TS v2)

std::experimental::ostream_joiner は単一パス LegacyOutputIterator であり、構築時に指定された std::basic_ostream オブジェクトに対して、 operator<< を使用して連続するオブジェクトを書き込み、区切り文字で区切ります。区切り文字は、書き込まれる2つのオブジェクトの間に出力ストリームに書き込まれます。書き込み操作は、イテレータ(デリファレンスされているかどうかに関わらず)が代入されたときに実行されます。 ostream_joiner のインクリメントは何も行いません。

典型的な実装では、 ostream_joiner のデータメンバは、関連付けられた std::basic_ostream へのポインタ、デリミタ、および次の書き込みがシーケンス内の最初の要素であるかどうかを示す bool メンバのみです。

std::ostream_iterator と比較して、 ostream_joiner は区切りシーケンスの出力回数が1回少なく、出力対象のオブジェクトの型に対してテンプレート化されていません。

目次

メンバー型

メンバ型 定義
char_type CharT
traits_type Traits
ostream_type std:: basic_ostream < CharT, Traits >
value_type void
difference_type void
pointer void
reference void
iterator_category std:: output_iterator_tag

メンバー関数

新しい ostream_joiner を構築する
(public member function)
(destructor)
(implicitly declared)
ostream_joiner を破棄する
(public member function)
オブジェクトを関連付けられた出力シーケンスに書き込む
(public member function)
何もしない操作
(public member function)
何もしない操作
(public member function)

非メンバー関数

ostream_joiner オブジェクトを作成し、関数引数からテンプレートの型引数を推論する
(関数テンプレート)

#include <algorithm>
#include <experimental/iterator>
#include <iostream>
#include <iterator>
int main()
{
    int i[] = {1, 2, 3, 4, 5};
    std::copy(std::begin(i),
              std::end(i),
              std::experimental::make_ostream_joiner(std::cout, ", "));
}

出力:

1, 2, 3, 4, 5

関連項目

std::basic_streambuf に書き込む出力イテレータ
(クラステンプレート)
std::basic_ostream に書き込む出力イテレータ
(クラステンプレート)
std::basic_istream から読み取る入力イテレータ
(クラステンプレート)