28

私は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>&) からアクセスできません。

4

2 に答える 2

43

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

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

#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 のもの

于 2010-08-09T17:30:51.167 に答える
10

std::stringstream はコピー コンストラクターを提供しないためstd::string ss1出力からビルドする必要があります。

std::stringstream ss2(ss1.str());
于 2010-08-09T17:28:20.080 に答える