W.F.
W.F.

Reputation: 13988

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

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

Answers (2)

Emil Laine
Emil Laine

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 of std::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

Peter Bloomfield
Peter Bloomfield

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

Related Questions