C/C++编程:输入输出流类模板std::basic_iostream
template< class CharT, class Traits = std::char_traits<CharT>>
class basic_iostream;
作用:包装给定的抽象设备(std::basic_streambuf)并提供高层输入/输出接口
此功能为 basic_streambuf 类所提供,在接口上实现。通过 basic_ios 类访问缓冲区。
模板实例化
类型 | 定义 |
---|---|
iostream | basic_iostream |
wiostream | basic_iostream<wchar_t> |
成员函数
std:
:basic_iostream
explicit basic_iostream( std::basic_streambuf<CharT,Traits>* sb ); (1)
basic_iostream( const basic_iostream& other ) = delete; (2) (C++11 起)
protected:
basic_iostream( basic_iostream&& other ); (3) (C++11 起)
构造新的流对象。
- 以 streambuf sb 初始化。基类初始化为 basic_istream
(sb) 和 basic_ostream (sb) 。调用后 rdbuf() == sb 而 gcount() == 0 - 不允许复制构造。
- 移动构造函数:
- 移动构造第一基类 basic_istream 为 basic_istream
(std::move(rhs)); ,这会继续移动构造并初始化虚基类 std::basic_ios 。 - 另一基类 basic_ostream 的初始化是实现定义的(例如,可以添加不做任何事的受保护默认构造函数到 std::basic_ostream ),因为移动构造不能使用 rhs 二次。
- 此移动构造函数受保护:它为导出流类 std::basic_fstream 和 std::basic_stringstream 的移动构造函数在它们移动并关联流缓冲前调用。
参数
- sb - 用以初始化的 streambuf
- other - 用以初始化的另一流
std:
:~basic_iostream
virtual ~basic_iostream();
析构输入/输出流
- 此析构函数不在底层流缓冲( rdbuf() )上进行任何操作
- 导出流,如 std::basic_fstream 和 std::basic_stringstream 的析构函数负责调用流缓冲的析构函数。
其他
C++ 包含两个输入/输出库:现代的、基于流的 I/O 库和 C 风格 I/O 函数的标准集合。
基于流的IO库围绕抽象的输入/输出设备组织。这些抽象设备允许相同代码处理对文件、内存流或者随即进行任意操作的自定义设备其的输出如出错
基于流的输入/输出库围绕抽象的输入/输出设备组织。这些抽象设备允许相同代码处理对文件、内存流或随即进行任意操作(例如压缩)的自定义适配器设备的输入/输出。
大多数已经被类模板化,故它们能被适配到任何标准字符类型。为最常用的基本字符类型( char 和 wchar_t )提供分离的 typedef 。以下列层次将类组织:
抽象
ios_base | 管理格式化标志和输入/输出异常(类) |
basic_ios | 管理任意流缓冲(类模板) |
basic_streambuf | 抽象原生设备(类模板) |
basic_ostream | 包装给定的抽象设备(std::basic_streambuf)并提供高层输出接口(类模板) |
basic_istream | 包装给定的抽象设备(std::basic_streambuf)并提供高层输入接口(类模板) |
basic_iostream | 包装给定的抽象设备(std::basic_streambuf) |
还没有评论,来说两句吧...