文档介绍:第7章 I/O流
1
《面向对象技术与Visual C++》--第7章
本章主要内容
流的概念
非格式化输入/输出
格式化输入/输出
文件的输入/输出
2
《面向对象技术与Visual C++》--第7章
流的概念
在C++中,将数据从一个对象到另一个对象的流动抽象为“流”。流动的方向不同,构成输入/输出流,即I/O流。
在C++程序中,数据可以从键盘流入到程序,也可以从程序流向屏幕或磁盘文件。
从流中获取数据的操作称为提取操作
向流中添加数据的操作称为插入操作。
数据的输入/输出就是通过I/O流来实现的。
3
《面向对象技术与Visual C++》--第7章
C++编译系统提供的I/O流库含有两个平行基类:streambuf和ios,所有的流类都是由它们派生出来的。
ios类有4个直接派生类,即输入流类istream、输出流类ostream、文件流类fstreambase、串流类strstreambase,这4种流作为流库中的基本流类。
4
《面向对象技术与Visual C++》--第7章
I/O流库中各个类之间的层次关系
stdiostream
ios
istrstream
istream
ifstream
istream_withassign
ostream
fstream
ostream_withassign
strstream
iostream
ofstream
ostrstream
streambuf
strstreambuf
filebuf
stdiobuf
fstreambase
strstreambase
5
《面向对象技术与Visual C++》--第7章
非格式化输入/输出
非格式化输入/输出就是按系统预定义的格式进行的输入/输出。
按默认约定,每个C++程序都能使用标准I/O流,如标准输入、标准输出。
cin用来处理标准输入,即键盘输入;
cout用来处理标准输出,即屏幕输出。。
在使用cout和cin前,要用编译预处理命令将所使用的头文件包含到源程序中,其格式如下:
#include <>
6
《面向对象技术与Visual C++》--第7章
非格式化输出
“<<”是预定义的插入运算符,作用在流类对象cout上,实现默认格式的屏幕输出。使用cout输出表达式值到屏幕上的格式如下:
cout<<E1<<E2<<…<<Em;
其中,E1、E2、…、Em为均为表达式。功能是计算各表达式的值,并将结果输出到屏幕当前光标位置处。
cout是ostream流类的对象,:
ostream cout(stdout);
其中,stdout表示标准输出设备名(屏幕)。
7
《面向对象技术与Visual C++》--第7章
非格式化输入
“>>”是预定义的提取运算符,作用在流类对象cin上,实现默认格式的键盘输入。使用cin将数据输入到变量的格式如下:
cin>>V1>>V2>>…>>Vn;
其中,V1、V2、…、Vn都是变量。功能是暂停执行程序,等待用户从键盘输入数据,各数据间用空格或Tab键分隔,输入数据类型要与接受变量类型一致,输完后,按回车键结束。
cin是istream流类的对象,:
istream cin(stdin);
其中,stdin表示标准输入设备名(键盘)。
8
《面向对象技术与Visual C++》--第7章
格式化输入/输出
C++提供了两种进行输入/输出格式化的方法:
一种是用ios类成员函数进行格式化。
另一种是用专门的操作符函数进行格式化。
9
《面向对象技术与Visual C++》--第7章
用ios类成员函数格式化
ios类成员函数主要是通过对状态标志、输出宽度、填充字符以及输出精度的操作来完成输入/输出格式化。
枚举量定义在ios类中,因此引用时必须包含ios::前缀。使用时应该全部用符号名,绝不要用数值。
10
《面向对象技术与Visual C++》--第7章