第八章 标准io库
来源:互联网 发布:软件质量保证计划内容 编辑:程序博客网 时间:2024/06/14 13:43
8.1 面向对象的io库
1) 组成:
对应的宽字符的流类型就是在前面加了一个w例如:
wistream
wostream
wcout
wcin
…..
2) 继承关系
3) io对象不可以复制或复制
1. 因此不能存储在vector 等容器内
2. 当然也不可以作为形参或返回类型,如果用作参数,必须是引用类型.对流的操作总会涉及到改变,所以不要用const类型
8.2 条件状态
1) 标准库定义的状态标记
strm::iostate
2) 状态标记的取值
strm::badbit //被破坏的流,系统级错误
strm::failbit //失败的io操作
strm::eofbit //流已经达到文件的结束符
3) 查询状态的函数
eof(); //如果strm::eofbit 被设置,返回true
fail(); //如果strm::failbit 被设置,返回true
good(); //如果流处于有效状态 返回true
bad(); //如果strm::badbit 被设置,返回 true
4) 设置状态的函数
clear(); //使流中所有状态都重设为有效,说白了就是清除错误状态
clear(flag); //清除指定错误状态
setsate(flag); //给strm::iostate添加指定的状态
5) 返回现在状态
rdstate();
8.3 输出缓冲区的管理
1) 刷新缓冲区
endl;//输出一个 ‘/n’ 再刷新
ends;//输出一个 ‘/0’ 再刷新
flush;//直接刷新
2) 如果要刷新所有的输出可以用unitbuf操纵符
cout << unituf <<” … ”;//等价于 cout<< unituf <<” … ”<<flush;
3) 绑定
任何读入输入流的尝试都将首先刷新其对应的输出缓冲
cin.tie(&cout);//绑定
cin.tie(0);//取消绑定
ostream *oldTie = cin.tie();//保存绑定对象
8.4 文件的输入和输出
1) 类型
ifstream 读文件
ofstream 写文件
fstream 可读可写
2) 打开文件
istream infile(iffile.c_str());
infile.open(“in”);
if(!infile)
//openerror;
3) 关联不同文件
infile.close();
infile.open(“out”);
4) 清除状态
当文件流出现了什么非正常状态(包括eofbit )的时候需要clear() 否则不能继续读取
4) 文件模式
ostream : out(写) trunc(清空已经存在的文件流) app
istream : ate(定位在文件尾) binary in(读)
例子:
Ifstream &openfile(ifstream& in,const string &filename)
{
in.close();
in.clear();
in.open(filename.c_str());
returnin;
}
8.5 字符串流
例子:
string line,word;
while(getline(cin,line))
{
istringstreamstream(line);
while(stream>>word){}
}
1) 特定函数
strm.str();//返回string
strm.str(s);//将string 复制给s
2) 使用
用来转换输入输出格式是不错的类似于c风格的 sprintf的功能
- 第八章 标准io库
- 第八章:标准IO库
- 第八章 标准IO库
- 第八章 标准IO库
- 第八章:标准 IO 库
- 第八章 标准IO库
- 第八章 标准IO库
- 第八章 标准IO库
- 第八章 标准IO库
- C++ Primer 第八章 标准IO库
- C++ Primer 第八章 标准IO库
- C++ Primer 第八章 标准IO库
- c++笔记 第八章 标准IO库
- C++ Primer 4 第八章 标准 IO 库
- c++primer学习笔记 ( 第八章 标准IO库)
- C++Primer笔记 第八章 标准IO库
- (笔记)C++ Primer/第八章 标准IO库
- C++ Primer 【第四版】第八章 标准IO库
- 斐波那契的递归算法
- 本人简历
- RSA实现C# 加密详解
- Stardict 真人发音配置
- c++ thread
- 第八章 标准io库
- 获得filter的CLSID的几种方法
- 无时无处不重构 —— 评《重构:改善既有代码的设计》
- 技嘉770T-UD3P 的Realtek HD声卡
- 年轻工程师如何锻炼成高手的
- 常见总线
- ORACLE中的字符串替换 replce、regexp_replace 和 translate
- 互勉
- address already in use: jvm_bind:8080