C面向对象程序第13章课件

上传人:无*** 文档编号:187381569 上传时间:2023-02-13 格式:PPT 页数:55 大小:272.50KB
返回 下载 相关 举报
C面向对象程序第13章课件_第1页
第1页 / 共55页
C面向对象程序第13章课件_第2页
第2页 / 共55页
C面向对象程序第13章课件_第3页
第3页 / 共55页
点击查看更多>>
资源描述
C面向对象程序第13章授课老师:C面向对象程序第13章本章要点13.1 流类体系 13.2 文件操作 C面向对象程序第13章本章要点本章要点I/O流、流类与流类体系的概念流的输入输出控制格式文件的概念及文件的使用文件流类体系结构文本文件与二进制文件的使用C面向对象程序第13章流(stream)是一种抽象。它负责在数据的生产者和数据的消费者之间建立联系,并负责管理数据的流动。在C+程序中,数据可从键盘流入程序中,也可以从程序流向屏幕或磁盘文件。C+的流类主要是以两个类为基础的;ios类和streambuf类,由ios类和streambuf类所派生出来的类各自负责不同的工作。ios类及其派生类用于处理与输入、输出有关的操作,例如读写文件、键盘输入和屏幕输出等。C面向对象程序第13章cin:是istream类的对象,用于处理键盘输入。cout:是ostream类的对象,用于处理屏幕输出。cerr:是ostream类的对象。用于处理出错信息,并直接输出。clog:是ostream类的对象,用于处理出错信息,并使用缓冲区输出。C面向对象程序第13章1.输出流cout是ostream类的对象,因为它所指向的是标准输出设备(显示器屏幕),所以它在iostream头文件中作为全局对象进行定义。cout对象定义格式如下:ostream cout(stdout);cout默认指向的C+中的标准设备名,作为其构造函数的参数使用。在iostreamh头文件中,ostream类对应每个基本数据类型都有其友元函数对左移操作符进行了友元函数的重载。C面向对象程序第13章流的输入采用提取运算符“”来实现,其左操作数为输入流类istream的对象。istream已经预定义了对C+内部数据类型的输入方法。C+中预定义了一个标准输入流对象cin,它对应于C语言中的stdin,用于从标准输入设备(通常为键盘)读入数据。下面的例子从标准输入设备读入整型数据和双精度数据,然后输出。C面向对象程序第13章#include stdafx.h#include stdio.h#include iostream.hvoid main()int i;double d;cini;cind;couti,dendl;getchar();C面向对象程序第13章3 5.63,5.6提取运算表达式的值自然为输入流对象,上面例子中的两行输出语句可以连写为cid;提取运算符可以重载,由用户定义如何输入自定义的类对象。在重载提取运算符时,同时应将其重载为类的友元,而不是成员。对于任何给定的用户定义类型T,定义一个operator函数,用于从指定的输入流读取T类型的对象。C面向对象程序第13章#include stdafx.h#include stdio.h#include iostream.hclass pointint x,y;public:point(int x,int y)point:x=x;point:y=y;point operator+(point p)return point(x+p.x,y+p.y);/接下页C面向对象程序第13章point operator-(point p)return point(x-p.x,y-p.y);friend istream&operator(istream&in,point&pt);friend ostream&operator(ostream&,point&);istream&operator(istream&in,point&pt)/接下页C面向对象程序第13章char ch;inch;if(ch=c)inpt.x;inch;inpt.y;inch;return in;C面向对象程序第13章(1)格式控制成员函数ios类定义的格式控制成员函数必须作为流对象(如:cout、cin)的成员函数来使用,因此其调用格式为:();(2)预定义格式控制函数。C+直接提供的预定义格式控制函数为普通函数。因此其调用格式为:():C面向对象程序第13章(1)输出宽度及填充字符。输出宽度可通过输出格式控制成员函数width(n)、填充成员函数fill(c)与预定义格式控制函数setw(n)实现。其中n为输出数据的宽度,c为填充字符。width成员函数与fill成员函数均在头文件iostreamh中说明,因此要使用这两个函数,必须在程序中包含iostreamh头文件。而预定义格式控制函数setw在头文件iomaniph中说明,要使用setw必须在程序中包含iomaniph头文件。C面向对象程序第13章#include stdafx.h#include stdio.h#include iostream.hvoid main()float a=11,22.2,33.33,44.444,55.5555;for(int i=0;i5;i+)cout.width(10);/设置输出宽度为10coutaiendl;getchar();C面向对象程序第13章11222333344444555555C面向对象程序第13章#include stdafx.h#include stdio.h#include iostream.h#include iomanip.hvoid main()/接下页C面向对象程序第13章char*name=Zhou,Zhao,Liu,Chen,Li;double score=11,22.2,33.33,44.444,55.5555;for(int i=0;i5;i+)coutsetw(6)nameisetw(10)scoreiendl;getchar();程序运行后输出结果:Zhou 11Zhao 222Liu 3333Chen 44444Li 555555C面向对象程序第13章由于setw不是成员函数,所以应直接调用,如:cout”运算符来实现的。在C+中,允许用户自己定义istream的对象。但只要程序中包含头文件iostreamh,系统自动为该程序产生输入流cin和输出流cout。通常用户只要利用流cin就可完成不同类型数据的输入。C面向对象程序第13章#include#include stdafx.h#include stdio.h#include iostream.hvoid main()int a,b,c;/接下页C面向对象程序第13章cout请输入一个整数(十进制数):deca;cout请输入一个整数(八进制数):decb;cout请输入一个整数(十六进制数):decc;couta=decaendl;coutb=octbendl;coutc=hexcendl;getchar();C面向对象程序第13章输入一个整数(十进制数):256输入一个整数(八进制数):256输入一个整数(十六进制数):256则输出:a=256b=400c=100C面向对象程序第13章(1)在输入数据时,空格作为数据间的分隔符。(2)输入的数据类型必须与要提取的数据类型一致,否则会出现错误。(3)在输入数据时,回车换行符(Enter键)起两方面的作用.C面向对象程序第13章1成员函数put()成员函数put()提供一种将字符送进输出流的方法,使用形式如下:coutput(char c);或者coutput(const char c);C面向对象程序第13章#include stdafx.h#include stdio.h#include iostream.hvoid main()char a=A,b=B;cout.put(A).put(a).put(b)endl;getchar();程序执行结果如下:AABC面向对象程序第13章成员函数write()也可提供一种将字符串送到输出流的方法,使用形式如下:coutwrite(const char*str,int n);其中,str是一个字符指针或字符数组,用来存放一个字符串;n是一个整型数,它用来表示输出显示字符串中字符的个数。若要显示整个字符串,则用strlen(str)。C面向对象程序第13章#include#includevoid Print(char*s)cout.write(s,strlen(s);void main()char str=a string;coutThe string isstrendl;Print(str);程序执行结果如下:The string is a stringa stringC面向对象程序第13章为了向流插入和提取自定义类型的数据,可以对预定义的插入符和提取符的进行重载。插入符重载的一般格式如下:ostream&operator(istream&stream,class_name&obj)重载代码return stream;注意:注意:第一个参数是istream类对象的一个引用,stream必须是一个输入流。C面向对象程序第13章在C+中有两类文件:外设文件(如键盘、显示器、打印机等)和磁盘文件,前面介绍的标准输入输出流cin、cout都是从外设文件(如键盘、显示器)输入输出数据。本节将讨论如何从磁盘文件输入输出数据,即讨论磁盘文件的建立、打开、读写和关闭操作。C面向对象程序第13章1文件文件是由文件名标识的一组有序数据的集合,文件通常存放在磁盘上。文件名是由字母数字序列组成。如:myfiletxt,youfiletxt。源程序、学生档案记录、图形、音乐等均可以作为文件存储在磁盘上。C面向对象程序第13章文件有二种数据格式,二进制文件与文本文件。(1)二进制文件:由二进制数据组成,最小存取单位为字节。(2)文本文件:由字符的ASCII码组成,最小存取单位为字符。文本文件也称为ASCII码文件。C面向对象程序第13章使用文件前必须首先打开文件,然后才能对文件进行读写操作,最后关闭文件。C+对文件的建立、打开、读写、关闭操作都是通过C+的文件流类体系来实现的。要学会C+的文件操作,必须首先了解C+的文件流类体系。C面向对象程序第13章当程序中使用文件时,要包含头文件fstreamh。1 ofstream类ofstream类由ostream类公有派生而来,它实现数据写入到文件中的各种操作。2 ifstream类ifstream类由istream类公有派生而来,它实现从文件中读数据的各种操作。3 fstream类fstream类由iostream类公有派生而来,它提供了对文件数据的读与写操作。C面向对象程序第13章1打开和关闭一个输出文件打开一个输出文件的含义是:打开一个文件,允许向这个文件中写人数据。可以通过直接创建一个ofstream类的对象来打开一个用于进行数据输出的文件,如下面的语句所示:ofstream ofs(datadat);或者ofstream ofs;ofopen(datadat);C面向对象程序第13章打开一个输入文件的含义是:打开一个文件,允许从这个文件读出数据。可以通过直接创建一个ifstream类的对象来打开一个用于进行数据读人的文件,如下面的语句所示:ifstream ifs(studentdat);或者ofstream ifs;ifs.open(studentdat);C面向对象程序第13章打开一个输入、输出文件的含义是:打开一个文件,允许从这个文件读出数据,也可以向这个文件写入数据。可以通过直接创建一个fstream类的对象来打开一个可用于输入、输出的文件,如下面的语句所示:fstream fs(inittxt);或者fstream fs;fsopen(inittxt);C面向对象程序第13章C+文件包括文本文件和二进制文件两种类型,对它们的操作各有不同对文本文件,既可进行带格式的输入输出操作,也可进行无格式的输入输出操作,但多数情况下是前者对于二进制文件,只能进行无格式的输入输出操作。13.2.5小节讨论对二进制文件的访问操作。当只需要对数据进行顺序输入输出操作时,则适合使用文本文件。对文本文件的访问操作包括向文本文件顺序输出数据和从文本文件顺序输入数据这两个方面。所谓顺序输出就是依次把数据写入到文件的末尾(当然文件结束符也随之后移,它始终占据整个文件空间的最后一个字节位置),顺序输入就是从文件开始位置起依次向后提取数据,直到碰到文件结束符为止。C面向对象程序第13章#include stdafx.h#include stdio.h#include iostream.h#include fstream.hvoid read(ifstream T)/从文件读取数据并显示char ch;while(!T.eof()/判断是否到文件结尾T.get(ch);/读取一个字符coutch;/显示ch的值coutendl-endl;C面向对象程序第13章void main()ifstream T;/创建ifstream类的实例TT.open();/利用open()函数使T与文件建立关联read(T);/调用上面的read()函数T.close();/取消与文件的关联coutendl;getchar();C面向对象程序第13章C面向对象程序第13章据此,只要fileltxt存在并存储了文本内容,将看到这些内容被显示。其实文件名并不是唯一可以向open()函数或者构造函数(其实都一样)传递的参数。下面是一个函数原型:ifstream:Open(char*,int open_mode);应当知道表示文件的名称(一个字符串),而新出现了open_mode(打开模式)。open_mode的值用来定义以怎样的方式打开文件。打开模式的参数见表 C面向对象程序第13章第一种:最通常的检测办法Xfstream File(FirstFiletxt);/X表示“I”或“O”if(!File)/判断File对象的值toutError opening the n;exit(1);第二种:如果文件已经被创建,返回一个错误。ofstream File(unexisting.txt,ios:nocreate);if(!File)coutError opening the n;exit(1);第三种:使用fail()函数。ofstream File(,ios:nocreate);if()coutError opening the n;exit(1);C面向对象程序第13章虽然有规则格式(formatted)的文本非常有用,但有时候需要用到无格式(unformatted)的文件二进制文件。它们和可执行程序看起来一样,而与使用“”操作符创建的文件则大不相同。get()函数与put()函数则赋予读写无规则格式文件的能力,要读写一整块的数据,那么可以使用read()和write()函数。C面向对象程序第13章#include stdafx.h#include stdio.h#include iostream.h#include fstream.hvoid main()fstream File(test_,ios:out|ios:in|ios:binary);char ch;ch=o;(ch);/将ch的内容写入文件(ios:beg);/定位至文件首部(ch);/读出一个字符coutchendl;/将其显示在屏幕上();getchar();程序执行后输出:oC面向对象程序第13章#include stdafx.h#include stdio.h#include iostream.h#include fstream.h#include string.hvoid main()fstream File(test_,ios:out|ios:in|ios:binary);char arr13;strcpy(arr,Hello World!);(arr,5);/将前五个字符-Hello写入文件(ios:beg);static char read_array10;/读出些数据(read_array,3);/读出前三个字符coutread_array”、插入运算符“”与插入运算符“”与插入运算符“ch)outfilech;用成员函数get()、getline()与put()对文件读与写。如:char ch,buff500;while(infileget(ch)outfileput(ch);while(infilegetline(buff,500)outfilebuff;(4)关闭文件。用成员函数close关闭文件,如:infileclose();outfileclose();关闭文件时,系统将与该文件相关联的内存缓冲区中的数据写到文件中,收回与该文件相关的主存空间,将文件名与文件对象之间建立的关联断开。C面向对象程序第13章二进制文件的使用与文本文件的使用类似,首先要定义文件流对象,然后用open函数打开文件,打开方式必须使用ios:binary。读写文件时要使用读函数read()与写函数write(),并可用定位函数seekg与seekp移动文件指针,随机读写文件中任一字节单元的内容。文件使用完毕后,要用close函数关闭文件。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!