std::basic_istream<CharT,Traits>::basic_istream
来自cppreference.com
| |
(1) | |
| |
(2) | (C++11 起) |
| |
(3) | (C++11 起) |
1) 构造 basic_istream 对象,通过调用 basic_ios::init(sb) 赋初始值给基类。初始化 gcount() 的值为零。
2) 复制构造函数为受保护,且被弃置。输入流不可复制。
3) 移动构造函数从 rhs 复制 gcount() 的值,设置 rhs 的 gcount() 值为零,并使用 basic_ios<CharT, Traits>::move(rhs) 从 rhs 移动除了 rdbuf() 之外的所有 basic_ios 成员到 *this 中。此移动构造函数受保护:它为可移动输入流类 std::basic_ifstream 和 std::basic_istringstream 的移动构造函数所调用,它们知道如何正确地移动关联流缓冲。
参数
| sb | - | 用作底层设备的流缓冲 |
示例
Run this code
#include <iostream>
#include <sstream>
int main()
{
std::istringstream s1("hello");
std::istream s2(s1.rdbuf()); // OK: s2 与 s1 共享缓冲区
// std::istream s3(std::istringstream("test")); // 错误:移动构造函数为受保护
// std::istream s4(s2); // 错误:复制构造函数被弃置
std::istringstream s5(std::istringstream("world")); // OK: 派生类调用移动构造函数
std::cout << s2.rdbuf() << ' ' << s5.rdbuf() << '\n';
}
输出:
hello world