C++ primer 第八章笔记 初稿
来源:互联网 发布:淘宝手机端gif 编辑:程序博客网 时间:2024/06/06 08:23
8.1 IO类
不同的IO处理操作,分别定义在三个独立的头文件中:
其中,iostream定义了用于读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型。宽字符的类型与函数以w开头。
ifstream与istringstream均继承istream,故cin等方法一样适用于ifstream与istringstream。
1. IO对象不能被拷贝,故不存在流类型的形参与返回类型,只能有引用的形式。
2. 条件状态
int main(){ int a; while(cin>>a) cout<<a<<endl; return 0;}
一个简易的输入检查
3. IO库定义了四个iostate类型的constexpr值,用于表示特定的位模式,本质上只有good 和 fail。
goodbit:0000 0000;
badbit :0000 0001;
eofbit :0000 0010;
failbit:0000 0100;
4. 管理条件状态
cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit);
5. 管理输出缓冲
- 每个输出流都管理一个缓冲区
- 缓冲区刷新有如下导致因素
- 程序正常结束
- 缓冲区已满
- endl等显示刷新缓冲区
- 设置为unitbuf
- 输出流与另一个流相关联,且被关联的流发生读写操作
- 显示刷新缓冲区的三种方法
- flush——不附加任何字符
- endl——附加一个换行
- ends——附加一个空字符
- unitbuf——每次输出都刷新缓冲区
- tie函数
- 无参数:返回指向输出流的指针
- 有参数:实现关联(x.tie(&o))
8.2文件的输入输出
1. 基本信息
头文件:fstream
包含类型:
- ifstream: 文件写入数据
- ofstream:读取文件数据
- fstream: 读写指定文件
- 成员
- 继承自iostream中的方法
- fstream f(s): 创建一个fstream对象,关联s文件,s为string或char*,此时open()会被自动调用
- fstream f(s,mode): 以mode指定打开文件的方式
- f.open(s): 显示关联s并打开该文件
- f.close(): 关闭流
- f.is_open(): 反应文件是否成功打开且为关闭
2. 文件模式 (mode)
- 设定out后才可以设定trunc
- 设定为trunc后不可以设定app
- out trunc无须显式设定
- 设定为app模式可保护被open文件的原有内容
3. 使用实例
- 复制文件
#include <iostream>#include <istream>#include <fstream>#include <cstring> #include <cmath>#include <vector>#include <algorithm>using namespace std;int main(){ ifstream input; ofstream output("text2.txt"); string s; input.open("text1.txt"); if(input){ while(input>>s){ output<<s<<" "; cout<<s<<endl; } } return 0;}
如果调用open失败,或在关闭已经打开文件的文件流前调用open,failbit置位。
如果一个文件流到达作用域末尾,则自动调用close()。
8.3 string 流
1. 基本信息
- 头文件: sstream
- 父类:: iostream
包含类型:
- istringstream
- ostringstream
- stringstream
成员
- sstream st(s):创建一个与s串相关联的字符串流对象
- st.str():返回s串
- st.str(s):将字符串流与s串相关联
0 0
- C++ primer 第八章笔记 初稿
- C++primer 第九章笔记 初稿
- C++primer 第十章笔记 初稿
- C++primer 第二章笔记 初稿
- C++primer 第三章笔记 初稿
- C++primer 第四章笔记 初稿
- C++primer 第五章笔记 初稿
- C++primer 第六章笔记 初稿
- C++primer 第十一章笔记 初稿
- C++primer 第十二章笔记 初稿
- C++primer 第十三章笔记 初稿
- C++primer 第十四章笔记 初稿
- C++primer 第十五章笔记 初稿
- C++primer 第十六章笔记 初稿
- c primer Plus第八章笔记
- C++ primer 第十六章笔记 初稿
- C++primer 第八章
- c++primer 第八章
- golang标准库 io
- (转)Android onClick 按钮单击事件 四种常用写法
- Python读取本地文件并解析网页元素
- Windows下如何采用微软的Caffe配置Faster R-CNN
- ACM_HDU 1000 A + B Problem
- C++ primer 第八章笔记 初稿
- HTML
- Android常见的几种RuntimeException
- J.U.C-包下的类分类
- 去跑步吧,少年
- 开通博客
- JavaWeb开发模式1:JSP+JavaBean
- 1027.Colors in Mars (20)
- Trie (2) -- Add and Search Word - Data structure design