有没有办法把 std::move std::string 变成 std::stringstream

Is there a way to std::move std::string into std::stringstream

在 c++ 参考中,我没有看到 std::stringstream 构造函数接受 std::string 的右值引用。是否有任何其他辅助函数可以在没有开销的情况下将字符串移动到 stringstream,或者是否有特定的原因造成这种限制?

从 C++20 开始,您可以将 string 移动到 stringstream 中:cppreference


C++20 之前的旧答案:

I do not see a std::stringstream constructor accepting rvalue reference of std::string

没错。即使 str setter 也不使用移动语义,因此不支持将字符串移动到 stringstream 中(不在当前标准中,但希望在下一个标准中)。

您将能够在 C++20 中将字符串移动到字符串流中。

constructor:

支持移动语义
std::string myString{ "..." };
std::stringstream myStream{ std::move(myString) };

也可以在构造完成后调用str():

std::string myString{ "..." };
std::stringstream myStream;
myStream.str(std::move(myString));