std::experimental::ostream_joiner<DelimT,CharT,Traits>:: operator=
From cppreference.net
<
cpp
|
experimental
|
ostream joiner
|
template
<
class
T
>
ostream_joiner & operator = ( const T & value ) ; |
(1) | (ライブラリ基盤仕様 TS v2) |
|
ostream_joiner
&
operator
=
(
const
ostream_joiner
&
other
)
=
default
;
|
(2) |
(ライブラリ基盤仕様 TS v2)
(暗黙的に宣言) |
|
ostream_joiner
&
operator
=
(
ostream_joiner
&&
other
)
=
default
;
|
(3) |
(ライブラリ基盤仕様 TS v2)
(暗黙的に宣言) |
1)
まず、非公開の「最初の要素」フラグが
false
の場合、このイテレータに関連付けられた出力ストリーム
os
に区切り文字
delim
を挿入します。挿入は
os
<<
delim
;
のように行われます。
その後、無条件に「最初の要素」フラグを
false
に設定し、
value
を出力ストリームに
os
<<
value
;
のように挿入します。
privateメンバであるストリームポインタ、デリミタ、および「最初の要素」フラグをそれぞれ
out_stream
、
delim
、
first_element
とすると、この関数は以下と等価です
if (!first_element) *out_stream << delim; first_element = false; *out_stream << value; return *this;
2,3)
プライベートなストリームポインタ、デリミタ、および「最初の要素」フラグメンバをコピー/ムーブ代入する暗黙的に宣言されたコピー/ムーブ代入演算子。
パラメータ
| value | - | ストリームに書き込まれるオブジェクト |
| other | - |
このオブジェクトに代入される
ostream_joiner
オブジェクト
|
戻り値
* this .
例
このコードを実行
#include <experimental/iterator> #include <iostream> int main() { auto joiner = std::experimental::make_ostream_joiner(std::cout, ", "); joiner = "First"; joiner = "do no harm."; // 区切り文字を先頭に付加 }
出力:
First, do no harm.