std::istringstream iss(std::move(result_string));
根据我的理解,这个初始化声明并一次性移动 result_string。后来我像这样使用它:
while (iss >> result_string)
但我想声明iss
然后move()
分开。我能怎么做?
std::istringstream iss(std::move(result_string));
根据我的理解,这个初始化声明并一次性移动 result_string。后来我像这样使用它:
while (iss >> result_string)
但我想声明iss
然后move()
分开。我能怎么做?
您根本无法将字符串移动到字符串流中。是的,您可以输入std::istringstream iss(std::move(result_string));
任何您想要的内容,但它不会将字符串移动到流中。它会复制它。除非你的stringstream
实现有一些非标准的补充。
您可以随时使用以下str
函数重新初始化字符串流:
istringstream theStream(...);
//stuff
theStream.str(result_string); //Stream reinitialized.
如果你想把它包裹起来std::move
让自己感觉更好,你可以。但它仍然不会离开它。move
不是使东西移动的神奇药膏;这只是一个花哨的类型转换。实际的移动是通过构造函数发生的,而字符串流没有可以从std::string
对象移动的构造函数。
您可以使用std::istringstream::str()
来设置内部缓冲区。由于std::string
始终使用: 您可以安全地在内部const&
省略: ,因此使用的存储不是:std::move()
std::stringbuf
std::string
iss.str(result_string);