有没有办法把 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 中将字符串移动到字符串流中。
支持移动语义
std::string myString{ "..." };
std::stringstream myStream{ std::move(myString) };
也可以在构造完成后调用str()
:
std::string myString{ "..." };
std::stringstream myStream;
myStream.str(std::move(myString));
在 c++ 参考中,我没有看到 std::stringstream
构造函数接受 std::string
的右值引用。是否有任何其他辅助函数可以在没有开销的情况下将字符串移动到 stringstream,或者是否有特定的原因造成这种限制?
从 C++20 开始,您可以将 string
移动到 stringstream
中:cppreference
C++20 之前的旧答案:
I do not see a
std::stringstream
constructor accepting rvalue reference ofstd::string
没错。即使 str
setter 也不使用移动语义,因此不支持将字符串移动到 stringstream
中(不在当前标准中,但希望在下一个标准中)。
您将能够在 C++20 中将字符串移动到字符串流中。
支持移动语义std::string myString{ "..." };
std::stringstream myStream{ std::move(myString) };
也可以在构造完成后调用str()
:
std::string myString{ "..." };
std::stringstream myStream;
myStream.str(std::move(myString));