C++ 头文件系列(fstream)
1. 简介
该头文定义了与文件箱关联的流类的4个模版:
- basic_filebuf
- basic_ifstream
- basic_ofstream
- basic_fstream
和8个类型:
- filebuf
- ifstream
- ofstream
- fstream
- wfilebuf
- wifstream
- wofstream
- wfstream
2. basic_filebuf模版

该模版继承自basic_streambuf,同时将输入流与输出流与文件相关联,它的作用与basic_stringbuf是相似的。 因为继承自可重用的基类,它自身只定义了有限的公有函数和虚函数(虚函数不再赘述)。
2.1 公有函数
- open : 打开文件并关联。
- close : 关闭文件并取消关联。
- is_open : 检测先前是否顺利打开了文件。
- operator =(移动语义) : 移动语义的赋值运算符。
- swap : 交换两个对象内容。
2.2 全局模版函数
- swap : 基本上每个标准类都回提供swap的两种形式:成员函数 和 全局模版。
3. 基于文件的流类模版
- basic_ifstream内部使用bsaic_filebuf来控制刘序列,它继承自basic_istream。
- basic_ofstream内部使用bsaic_filebuf来控制刘序列,它继承自basic_ostream。
- basic_fstream内部使用bsaic_filebuf来控制刘序列,它继承自basic_iostream。
同样是由于继承可重用基类的缘故,这些类模版本身也都只定义了几个公有函数。
3.1 公有函数
- open : 打开文件并关联。
- close : 关闭文件并取消关联。
- is_open : 检测先前是否顺利打开了文件。
- rdbuf : 返回内部的basic_stringbuf对象指针。
- operator = (移动语义)
- swap
3.2 全局模版函数
- swap
4 typedefs
typedef basic_ifstream< char > ifstream;typedef basic_ofstream< char > ofstream;typedef basic_fstream< char > fstream;typedef basic_filebuf< char > filebuf;typedef basic_ifstream< wchar_t > wifstream;typedef basic_ofstream< wchar_t > wofstream;typedef basic_fstream< wchar_t > wfstream;typedef basic_filebuf< wchar_t > wfilebuf;
C++ 头文件系列(fstream)的更多相关文章
- C++ 头文件系列(array)
注意,该头文件仅在C++11中标准才开始出现. 简介 与语言内置的数组一样, array类模版支持几乎所有内置数组包含的特性: 顺序的(sequence) 内存连续的(contiguous stora ...
- C++ 头文件系列(queue)
简介 这个头文件定义了两个跟队列有关的类----quque.priority_queue,分别实现的是队列 和 优先队列这两个概念. 但是与这两个类模版与其它类模版(vector.array等)最大的 ...
- C++ 头文件系列(stack)
简介 该头文件只含有一个类模版stack, 它实现栈的概念,是一个容器适配器(说实话,在写这篇随笔之前我都不知道有这么个类模版). 栈 栈只有一个重要的特性: LIFO(last-in first-o ...
- C++ 头文件系列(vector)
简介 vector头文件包含vector的类模版以及该模版的显示特化版本vector< bool >. vector是C++容器库中非常通用的一种容器,如果你不知道该决定使用哪一种容器,或 ...
- C++ 头文件系列(map)
简介 该头文件包含两个概念相似的容器----map.multimap. 而这两个容器反映的概念就是 映射. 这两个容器 相同 的属性有: 关联性 映射 动态增长 键(Key)唯一性 这两个不相同的属性 ...
- C++ 头文件系列(unordered_map、unordered_set)
简介 很明显,这两个头文件分别是map.set头文件对应的unordered版本. 所以它们有一个重要的性质就是: 乱序 如何乱序 这个unorder暗示着,这两个头文件中类的底层实现----Hash ...
- C++ 头文件系列(iterator)
简介 该头文件围绕迭代器展开,定义了一系列与迭代器有关的概念,但最最最重要的一点就是----它和其它容器一起实现了C++容器的Iterator设计模式. Iterators are a general ...
- C++ 头文件系列 (algorithm)
简介 algorithm头文件是C++的标准算法库,它主要应用在容器上. 因为所有的算法都是通过迭代器进行操作的,所以算法的运算实际上是和具体的数据结构相分离的 ,也就是说,具有低耦合性. 因此,任何 ...
- C++ 头文件系列 (bitset)
简介 该头文件有关位集,实际上是vector 位 位本质上对应bool的概念,只有0或1,true或false两种对立的值. 但很可惜,字节才是机器上最小的存储单元,所以bool基本上是由一个字节大小 ...
随机推荐
- [转]配置 VIM 的 Go 语言开发环境
本文是针对像我这样的 VIM 小白而写的,所使用的 VIM-GO 插件虽然步骤简单但不够详细,特写此文以做记录和分享.欢迎各位大神纠正补充! 特别说明 本博文不是 Go 语言环境搭建教程,只是 VIM ...
- zend framework 配置连接数据库
Zend_Db_Adapter是zend frmaeword的数据库抽象层api.基于pdo, 你可以使用Zend_Db_Adapter连接和处理多种 数据库,包括:microsoft SQL ...
- PHP+AJAX 地区三级联动代码
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- oracle系列--级联删除和级联更新
必须声明:此博客转载于Oracle外键级联删除和级联更新http://www.2cto.com/database/201507/417496.html 鉴于此前收藏的精彩博客无料被删除了,很是痛心,所 ...
- React Native 之 HelloWorld
1. 切换目录 输入之前要切换到要保存的目录 2. 修改下载源 cd ~/ vim .npmrc 添加 registry = https://registry.npm.taobao.org 3. 在终 ...
- iOS 之 支付
现在广泛应用的是微信支付和支付宝支付,这两种应该覆盖了几乎所有网上消费的用户,所以我们就用这两种支付方式就够了.2014年用过支付宝的网民购物占比有94%. 1. iOS 之 微信支付 2. iOS ...
- "SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名"转
"SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名" 2014-06-12 12:01:10 最近在学习SQL SERVER的高级复制技术的时候 ...
- curl远程传输工具
/** * curl远程传输工具 */ public function post_curl($url,$body,$header,$type='POST'){ $ch = curl_init(); c ...
- PHP根据URL提取根域名
<?php #使用示例 echo getBaseDomain('http://blog.jp.goo.ne.jp/index.php')->domain;echo "\n&quo ...
- 如何迅速成为Java高手
很多网友朋友问我学习Java有没有什么捷径,我说“没有,绝对没有!”.但是我却很愿意将自己学习的一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛! 要想学好Java,首先要知 ...