私が持っています 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>&)からアクセスできません。
実際、ストリームはコピーできません(移動可能ですが)。
使用法に応じて、以下は非常にうまく機能します。
#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もの
std::stringstream
提供していません コピーコンストラクターとして、std::string
ss1
outputsからビルドする必要があります。
std::stringstream ss2(ss1.str());