#include <sstream>
#include <string>
using namespace std;
template<typename T>
string ToString(const T& obj)
{
ostringstream oss;
oss << obj;
//
// oss will never be used again, so I should
// MOVE its underlying string.
//
// However, below will COPY, rather than MOVE,
// oss' underlying string object!
//
return oss.str();
}
如何移動std :: ostringstream的底層字符串對象?如何移動std :: ostringstream的底層字符串對象?
我想你可以通過'S =舉動做(oss.rdbuf() - > STR())'[哦,我查了一下,**你不能**],但是冒險通過從地面下拉地毯來破壞流代碼的假設。你爲什麼要這樣? –
我認爲你可以發明一些有趣的東西,使用來自C++ 17的'node handle':http://en.cppreference.com/w/cpp/container/node_handle – alexeykuzmin0
這是不可能的,沒有任何義務,std :: basic_stringbuf'使用'std :: basic_string'作爲它的底層緩衝區(儘管這是它在實踐中的做法)。 – user657267