带有rvalue-“ input”的std :: getlinebasic_istream <...> && input,basic_string <...>&str

问题描述

有C ++ 11的更新版本的std :: getline。它接受右值“输入”参数。但是为什么会有一个右值参数,即函数将消耗“输入”参数,而在调用后将输入参数留空?

解决方法

我想这是在代码中将流构造为对Update table SET a=value WHERE x IN (Select * from (select x from table where condition) as t) 的调用的一部分,例如

getline

例如,此代码将从s的第一行放入s2。

像这样的代码在旧版本的std::string s = ...; std::string s2; getline(std::istringstream(s),s2); 中是不合法的,因为该代码的第一个参数是非常量引用。