名前空間
変種

std::basic_ostream<CharT,Traits>::basic_ostream

提供: cppreference.com
 
 
入出力ライブラリ
入出力マニピュレータ
Cスタイルの入出力
バッファ
(C++98で非推奨)
ストリーム
抽象
ファイル入出力
文字列入出力
配列入出力
(C++98で非推奨)
(C++98で非推奨)
(C++98で非推奨)
同期化出力
エラーカテゴリインタフェース
(C++11)
 
 
<tbody> </tbody>
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 オブジェクトを構築し、 std::basic_ios::init を呼ぶことで基底クラスに初期値を代入します。

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