Reputation: 13988
In the c++ reference I do not see a std::stringstream
constructor accepting rvalue reference of std::string
. Is there any other helper function to move string to stringstream without an overhead or is there a particular reason behind making such limitation?
Upvotes: 22
Views: 3547
Reputation: 42828
Since C++20 you can move a string
into a stringstream
: cppreference
Old answer for pre-C++20:
I do not see a
std::stringstream
constructor accepting rvalue reference ofstd::string
That's right. Even the str
setter doesn't utilize move semantics, so moving a string into stringstream
is not supported (not in the current standard, but hopefully in the next one).
Upvotes: 11
Reputation: 5766
You'll be able to move a string into a string-stream in C++20.
Move semantics are supported by the constructor:
std::string myString{ "..." };
std::stringstream myStream{ std::move(myString) };
It can also be done after construction by calling str()
:
std::string myString{ "..." };
std::stringstream myStream;
myStream.str(std::move(myString));
Upvotes: 11