Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::getline(带右值的基本输入、基本字符串);输入“;_C++_Istream - Fatal编程技术网

C++ std::getline(带右值的基本输入、基本字符串);输入“;

C++ std::getline(带右值的基本输入、基本字符串);输入“;,c++,istream,C++,Istream,有一个使用C++11的较新版本的std::getline。它接受一个右值“input”参数。但是为什么会有一个右值参数,即函数会使用“input”参数,在调用后将输入参数保留为空?我想这是为了代码,其中流是作为调用getline的一部分构造的,例如 std::string s = ...; std::string s2; getline(std::istringstream(s), s2); 例如,这段代码将从s中取出第一行,并将其放在s2中 像这样的代码对于较旧版本的getline是不合法的

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

我想这是为了代码,其中流是作为调用
getline
的一部分构造的,例如

std::string s = ...;
std::string s2;
getline(std::istringstream(s), s2);
例如,这段代码将从s中取出第一行,并将其放在s2中

像这样的代码对于较旧版本的getline是不合法的,因为它的第一个参数是非常量引用。

在中,提到的需要是“允许字符串I/O使用右值流”(第21节)。这一提议是假设N1377、N1690和N1770所记录的RVALL参考提案成为C++语言的一部分。如果您仔细查看,您可以清楚地看到右值流的使用。