1

std::ostringstream一部から別のデータを書き込む必要がありますstd::ostringstream。もちろんstr()機能も使えます

std::ostringstream in;
std::ostringstream out;

in << "just a test"; // it's just an example. I mean that stream in is filled somewhere
...
out << in.str();

同じことを行うより直接的な方法があるかどうか知りたいです。

4

2 に答える 2

1

コピー代入演算子/コピーコンストラクターは削除されます。ただし、メンバー関数swap(C++11) またはstd::swapを使用してコンテンツを交換できます。または、移動代入演算子 (C++11) を使用して、一方を他方に移動できます。このソリューションは、ソース文字列ストリームの内容を気にしない場合にのみ機能します。

例:

out = std::move(in); // C++11
out.swap(in); // C++11
std::swap(out, in); 

PS: g++ は上記の行のいずれもコンパイルしないことに気付きました (ostringstream の移動/スワップをサポートしていないようです) が、clang++ はそれをコンパイルします。標準 (27.8.4) によると、スワップ/移動は機能するはずです。C++ コンパイラが std::stringstream::swap を認識しないを参照してください

于 2014-11-27T15:51:55.143 に答える