名前空間
変種
操作

std::basic_ostream::basic_ostream

提供: cppreference.com
< cpp‎ | io‎ | basic ostream
 
 
 
std::basic_ostream
グローバルオブジェクト
メンバ関数
basic_ostream::basic_ostream
書式付き出力
書式なし出力
位置設定
その他
メンバ関数
非メンバ関数
 
explicit basic_ostream( std::basic_streambuf<CharT, Traits>* sb );
(1)
protected:
basic_ostream( const basic_ostream& rhs ) = delete;
(2) (C++11およびそれ以降)
protected:
basic_ostream( basic_ostream&& rhs );
(3) (C++11およびそれ以降)

1) basic_ostream オブジェクトを構築し、 basic_ios::init(sb) を呼ぶことで基底クラスに初期値を代入します。

2) コピーコンストラクタは protected であり、削除されています。 出力ストリームはコピー可能ではありません。

3) ムーブコンストラクタは、 rhs から *this に、 rdbuf() を除いたすべての basic_ios のメンバをムーブするために、 basic_ios<CharT, Traits>::move(rhs) を使用します。 このムーブコンストラクタは protected です。 紐付けられているストリームバッファを正しくムーブする方法を知っているムーブ可能な出力ストリームクラス std::basic_ofstream および std::basic_ostringstream のムーブコンストラクタによって呼ばれます。

[編集] 引数

sb - 出力シーケンスとして使用するストリームバッファ
rhs - 初期化元の basic_ostream

[編集]

#include <sstream>
#include <utility>
#include <iostream>
 
int main()
{
    // ERROR: copy ctor is deleted
//  std::ostream myout(std::cout);
 
    // OK: shares buffer with cout
    std::ostream myout(std::cout.rdbuf());
 
    // ERROR: move constructor is protected
//  std::ostream s2(std::move(std::ostringstream() << 7.1));    
 
    // OK: move ctor called through the derived class
    std::ostringstream s2(std::move(std::ostringstream() << 7.1)); 
    myout << s2.str() << '\n';
}

出力:

7.1