有没有办法将std :: move std :: string转换为std :: stringstream

时间:2016-05-14 17:18:54

标签: c++ c++11 c++14 move-semantics

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

2 个答案:

答案 0 :(得分:6)

  

我没有看到std::stringstream构造函数接受std::string

的右值引用

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

答案 1 :(得分:2)

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

constructor支持移动语义:

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

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

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