c++ - std::getline( basic_istream<...> &&input, basic_string<...> &str ) 右值 -"input"

标签 c++ istream

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

最佳答案

我想它是用于将流构造为调用 getline 的一部分的代码,例如

std::string s = ...;
std::string s2;
getline(std::istringstream(s), s2);

例如,此代码将从 s 中取出第一行并将其放入 s2 中。

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

关于c++ - std::getline( basic_istream<...> &&input, basic_string<...> &str ) 右值 -"input",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64605022/

相关文章:

c++ - 重载运算符 i/o 问题

c++ - istringstream 不尊重基地?

c++ - 如何读取二进制文件的全部 64 个字节?

c++ - istream::operator>>( const char& ) as no such function 是如何实现的?

c++ - 像素在 OpenCV 中设置不正确

c++ - 为什么我在应用 sizeof 运算符时会得到不同的结果?

当涉及 std::function 或 lambda 函数时,C++11 不推导类型

c++ - 通过构造函数传递的引用定义类成员

c++带有缩进的自定义输出流

c++ - 如何检查 std::cin 是否与终端或管道关联