web-dev-qa-db-ja.com

C ++で1つのstringstreamオブジェクトから別のオブジェクトにコピーするにはどうすればよいですか?

私が持っています std::stringstreamオブジェクトss1。さて、これから別のコピーを作成したいと思います。

私はこれを試します:

std::stringstream ss2 = ss1;

または:

std::stringstream ss2(ss1)

どちらも機能しません

エラーメッセージは次のようになります。

std :: ios :: basic_ios(const std :: ios&)は、bsl :: basic_stringstream、bsl :: allocator> :: basic_stringstream(const bsl :: basic_stringstream、bsl :: allocator>&)からアクセスできません。

25
skydoor

実際、ストリームはコピーできません(移動可能ですが)。

使用法に応じて、以下は非常にうまく機能します。

#include <iostream>
#include <sstream>

int main()
{
    std::stringstream ss1;
    ss1 << "some " << 123 << " stuff" << std::flush;

    std::stringstream ss2;
    ss2 << ss1.rdbuf(); // copy everything inside ss1's buffer to ss2's buffer

    std::cout << ss1.str() << std::endl;
    std::cout << ss2.str() << std::endl;
}

出力:

いくつかの123のもの
123もの

38
GManNickG

std::stringstream提供していません コピーコンストラクターとして、std::stringss1outputsからビルドする必要があります。

std::stringstream ss2(ss1.str());
7
Pedro d'Aquino