c++的io流库

上传人:正** 文档编号:51467450 上传时间:2018-08-14 格式:PPT 页数:54 大小:146.50KB
返回 下载 相关 举报
c++的io流库_第1页
第1页 / 共54页
c++的io流库_第2页
第2页 / 共54页
c++的io流库_第3页
第3页 / 共54页
c++的io流库_第4页
第4页 / 共54页
c++的io流库_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《c++的io流库》由会员分享,可在线阅读,更多相关《c++的io流库(54页珍藏版)》请在金锄头文库上搜索。

1、补充内容:第10章 C+的I/O流库l10.1 流抽象的继承结构l10.2 预定义的插入符与提取符l10.3 插入符和提取符的重载l10.4 磁盘文件的输入和输出l10.5 字符串流10.1 流抽象的继承结构1、流的基本概念l在C+中,语言本身并不包含输入和输出功能 ,但C+标准库提供了一套用于输入和输出的类 库。l在C+的输入、输出系统中,最核心的对象是 流(stream),一个流就是一个字节序列。流的操 作包括对流的读和写。lC+输入输出流的思想:令标准I/O、文件和存 储块看上去都一样,只需记住一个接口就可以了 。与标准C输入输出库的各种函数相比,输入输 出流更容易、更安全、更有效。10

2、.1 流抽象的继承结构(续)ios:对流状态进行设置,虚基类;istream、ostream、iostream:提取与插入;streambuf:提供对数据的缓冲支持;2、C+流的继承结构iosstreambufistreamostreamiostream10.1 流抽象的继承结构(续)3、文件的继承结构fstreambasefilebufifstreamofstreamiofstream fstreambase:公共基类; ifstream、ofstream、iofstream:文件操作; filebuf:提供对上述类的缓冲支持;10.1 流抽象的继承结构(续)4、字符串类提供处理内部初始化字

3、符序列的操作;istrstream:从序列中取字符;ostrstream:将字符放入序列;10.1 流抽象的继承结构(续)cout:ostream类对象,处理标准输出,即屏幕输 出;cerr:ostream类对象,处理标准出错信息,提供 不带缓冲区的输出;clog:ostream类对象,处理标准出错信息,提供 带缓冲区的输出;5、预定义的流 cin:istream类对象,处理标准输入,即键盘输 入;10.2.1 预定义的插入符1、预定义插入符的格式ostreamint a=100;int *pa=cout void main() cout #include void PrintString(c

4、har *s) cout.write(s,strlen(s).put(n);cout.write(s,6)(type其中:type为char、int、short、long类型和它们的 unsigned和signed类型,以及float、double、long double、 char *;2、说明 一般情况下将提取符作用于cin对象; 输入语句中可以串联多个提取运算符,每个提取 符后为一表达式,该表达式是获得输入值的变量 或对象;10.2.2 预定义的提取符(续) 提取操作时,空白符(空格、tab键、换行符) 只用于字符的分隔符,而本身不作为从输入流中 提取的字符; 提取符可从输入流中读取一个

5、字符串,该字符串 是以空白符结束的一个字符序列,由系统自动加 上0字符;10.2.2 预定义的提取符(续) 例10.4:分析下列程序的输出结果。 #include #include void main() const int SIZE=20;char bufSIZE;char *largest;int curLen,maxLen=-1,cnt=0;coutbuf)curLen=strlen(buf);cnt+;if(curLenmaxLen)10.2.2 预定义的提取符(续)maxLen=curLen;largest=buf;cout输 出68continue输入ctrl+z键后,cinbuf

6、 的值为0,退出while循环;10.2.2 预定义的提取符(续)3、使用get()获取一个字符istreamchar istream:get();4、使用getline()获取多个字符istream说明:vgetline()最多可读取Limit-1个字符;10.2.2 预定义的提取符(续)从输入流中读取Limit-1个字符后;从输入流中读取换行符或其他终止符后;从输出流中读取到文件或输入流结束符后;vgetline()通常用来读取一行字符5、使用read()读取一串字符istreamvgetline()函数结束操作的条件:10.2.2 预定义的提取符(续) 例10.5:分析下列程序的输出结果

7、。 #include void main() char ch;cout输出abc xyz 123 10.2.2 预定义的提取符(续) 例10.6:分析下列程序的输出结果。 #include void main() const int S=12;char bufS=“;coutefghijkl10.3 插入符和提取符的重载1、重载为友元函数ostream 2、函数调用形式ostrmobj; 等价于 operator (istrm,obj); istrmobj1obj2; 等价于 operator (operator(istrm,obj1),obj2);10.3 插入符和提取符的重载(续 )例10

8、.7:分析下列程序的输出结果。 #include class Date public:Date(int y,int m,int d)Year=y;Month=m;Day=d;friend ostream10.3 插入符和提取符的重载(续)private:int Year,Month,Day; ; ostreamreturn stream; void main()10.3 插入符和提取符的重载(续 )Date CDate(1999,10,22);coutCDate;cout void main() ofstream ostrm;ostrm.open(“f1.dat“);ostrmnd;cout

9、#include #include void main() fstream outfile;outfile.open(“f2.dat“,ios:out);if(!outfile)cout #include #include void main() fstream infile;infile.open(“f2.dat“,ios:in);if(!infile)cout #include #include #include void main() fstream outfile,infile;outfile.open(“f3.dat“,ios:out);if(!outfile)cout #inclu

10、de #include void main() fstream outfile,infile;infile.open(“f2.dat“,ios:in);if(!infile)cout #include #include struct person char name20;double height;int age; struct person people4=“Wang“,1.65,25, “Zhang“,1.72,24, “Li“,1.89,21, “Huang“,1.70,22; void main() fstream outfile,infile;10.4.3 二进制文件的读写操作(续

11、)outfile.open(“f5.dat“,ios:out|ios:binary);if(!outfile)cout #include #include void main() struct studentchar name20;long number;double totalscore;struct stu5=“Ma“,97001,85.72,“Li“,97002,92.62,“Hu“,97003,89.25,“Yan“,97004,90.84,“Lu“,97005,80.92;10.4.4 随机访问数据文件(续)fstream file1;student one;file1.open(“

12、f6.dat“,ios:out|ios:in|ios:binary);if(!file1)cout #include const int N=80; void main() char bufN;ostrstream out1(buf,sizeof(buf);int a=50;for(int i=0;i #include void main() char buf=“123 45.67“;int a;double b;istrstream ss(buf);ssab;cout #include void main() char buf=“12345“;int i,j;istrstream s1(bu

13、f);s1i;istrstream s2(buf,3);s2j;couti+jendl; 输出:12468本章小结l对于流的操作:除了读和写之外,还应注意流 的建立和删除。l对于文件流的操作,打开文件、完成对文件的 读或写操作后,不要忘记关闭文件。lC+的输入输出流较之C的I/O系统操作起来更简 洁、更易理解,同时可利用重载运算符扩展对新 数据类型的认知。l经过学习之后,要求能熟悉三种流的特点,能 够熟练的利用文件流建立和读写文件。作业:编写一个关于通讯录的程序可输入姓名、电话(可多个)、通讯地址 、Email等必要的信息;可根据姓名查询电话等信息(最好还能根据电话查询姓名),并显示在屏幕上;要求通讯录保存成文件,如张三.txt,用文件流的方式实现;最好用面向对象方法编写。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号