Вы не можете сделать это, не сделав хотя бы одну копию. В одну сторону:
std::stringstream ss;
ss << " world!";
const std::string &temp = ss.str();
ss.seekp(0);
ss << "Hello";
ss << temp;
Это полагается на "самый важный const
", чтобы продлить срок службы временного и избежать создания дополнительной копии.
Или, проще и, возможно, быстрее:
std::stringstream ss;
ss << " world!";
std::stringstream temp;
temp << "Hello";
temp << ss.rdbuf();
ss = std::move(temp); // or ss.swap(temp);
Это заимствует подход rdbuf
от этого ответа , поскольку интересная проблема заключается в том, как минимизировать копии.