名前空間
変種
操作

std::experimental::ostream_joiner

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

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

class ostream_joiner;
(Library Fundamentals TS v2)

std::experimental::ostream_joinerは、構築時に渡されたstd::basic_ostreamオブジェクトに、区切り文字で区切られた連続したオブジェクトをoperator<<を使って書き込む、シングルパスの出力イテレータ (LegacyOutputIterator) です。区切り文字は、書き込まれる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を構築する
(公開メンバ関数) [編集]
(デストラクタ)
(暗黙的に宣言)
ostream_joinerを破棄する
(公開メンバ関数) [編集]
関連付けられた出力シーケンスにオブジェクトを書き込む
(公開メンバ関数) [編集]
何も行わない
(公開メンバ関数) [編集]
何も行わない
(公開メンバ関数) [編集]

[編集] 非メンバ関数

関数引数からテンプレートの型引数を推論して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 から読み取る入力イテレータ
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)