资源描述
,第二级,第三级,第四级,第五级,第,10,章 异常,Chapter 15 Exception,*,*,/14,第,11,章 输入输出流,学习目标,1、掌握文件的输入与输出方法;,2、掌握输出格式的控制。,第,11,章 输入输出流,教学内容:,1,、标准,I/O,流,2,、文件操作与文件流,3,、案例解析,11.1,标准,I/O,流,(,1,),1,、,何谓输入输出流?,C+,的输入输出流是指由若干字节组成的字节序列,这些字节中的数据按顺序从一个对象传送到另一对象。流表示了信息从源到目的端的流动。,输入流:键盘或磁盘,=,内存,输出流:内存,=,输出设备,(如屏幕、磁盘、打印机等),流中的内容可以是,ASCII,字符、二进制形式的数据、图形图像、数字音频视频或其他形式的信息。,11.1,标准,I/O,流,(,2,),在,C+,中,输入输出流被定义为类。,C+,的,I/O,库中的类称为流类(,stream class)。,用流类定义的对象称为流对象。,cout,和,cin,并不是,C+,语言中提供的语句,它们是,iostream,类的对象,在未学习类和对象时,在不致引起误解的前提下,为叙述方便,把它们称为,cout,语句和,cin,语句。,在学习了类和对象后,我们对,C+,的输入输出应当有更深刻的认识。,11.1,标准,I/O,流,(,3,),学好,C+,就要学好,I/O,流类.,C,语言中也有输入输出语句,但不能适应面向对象的要求。,如:,printf(,“,%d,”,i);/,只能预先指定数据类型,couti8.9,”,abcdefg,”,endl;,/,能自动匹配数据类型,11.1,标准,I/O,流,(,4,),2、原理,在,iostream.h,中有如下定义:,class ostram,public:,friend ostream,friend ostream,friend ostream,protected:,/,数据成员,;,11.1,标准,I/O,流,(,5,),ostream cout(stdout);/,屏幕设备名作为构造参数,有了上述定义,则,语句,cout”abcdefg”,与第1个友元函数匹配,并解释为:,operator(cout,”abcdefg”);,语句,cout”abc”100,则解释为(,cout”abc”)100,而(,cout”abc”),是返回一个引用,还是一个对象,cout。,多态性通过重载函数实现,运行时的多态性通过虚拟函数实现。,11,.2,文件操作与,文件流,(,1,),1、输出文件,#,include,#include,const unsigned MAX=40;,class Equipment,char nameMAX;,char date11;,double price;,public:,void display(),coutstrupr(name)endl,Purchased date:date,Price:price(istream&in,Equipment&s),coutPlease input equipment name:;,cin.get(s.name,MAX);,couts.date;,couts.price;,coutendl;,return in;,;,11,.2,文件操作与,文件流,(,2,),void main(),char c;,Equipment sample;,ofstream myfile(DEMO,ios:out|ios:binary|ios:trunc);,/,格式参见,P179,表,11-1,此表要求记住,if(myfile.fail(),cerrError:Cant create file DEMO!sample;,myfile.write(char*),coutContinue(y/n)?c;,while(c=y|c=Y);,myfile.close();,11,.2,文件操作与,文件流,(,3,),2、输入文件,#,include,#include,const unsigned MAX=40;,class Equipment,char nameMAX;,char date11;,double price;,public:,void display(),coutstrupr(name)endl,“,Purchased date:,”,dateendl,“,Price:,”,priceendl;,;,11,.2,文件操作与,文件流,(,4,),void main(),equipment sample;,ifstream myfile(,“,DEMO,”,ios:in|ios:binary|ios:nocreate);,if(myfile.fail(),cerr,“,Error:Can,t open file DEMO!,”,endl;,else,for(;),myfile.read(char*),if(!myfile.eof(),sample.display();,else,cout,“,Warning:End of File!,”,endl;,break;,myfile.close();,运行结果:,如果,DEMO,文件不存在时,运行显示下列错误:,Error:Cant open file DEMO,如果,DEMO,文件存在,运行结果为:,显示文件,DEMO,的内容,11,.2,文件操作与,文件流,(,5,),3,、,格式控制,C+,有两种方法控制格式输出:控制符和成员函数。,(,1,),用控制符来控制输出的格式,#include,#include,void main(),float x=26.1234567;,coutsetprecision(3)xendl;/,输出:26.1,coutsetprecision(5)xendl;/,输出:26.123,int i=25;,couthex:hexiendl;/,输出:,hex:19,coutsetw(6)setfill(+)iendl;/,输出:+19,11,.2,文件操作与,文件流,(,6,),3,、,格式控制,(,2,)用流对象的成员函数来控制输出的格式,#,include,void main(),float x=26.1234567;,cout.precision(3);,coutxendl;/,输出结果:,26.1,cout.precision(5);,coutxendl;/,输出结果:,26.123,作 业,P186,第,1,、,2,、,3,题,
展开阅读全文