C+程序设计语言揣锦华第9章流类库与输入输出.ppt
《C+程序设计语言揣锦华第9章流类库与输入输出.ppt》由会员分享,可在线阅读,更多相关《C+程序设计语言揣锦华第9章流类库与输入输出.ppt(62页珍藏版)》请在三一办公上搜索。
1、第9章 流类库与输入/输出,9.1 输入/输出标准流类9.2 文件流类9.3 串流类9.4 控制符,9.1 输入/输出标准流类,9.1.1 输入/输出流的概念 就像C语言一样,C+语言中也没有输入/输出语句。C+的I/O是以字节流的形式实现的,每一个C+编译系统都带有一个面向对象的输入/输出软件包,这就是I/O流类库。其中,流是I/O流类的中心概念。到目前为止,我们一直在使用它。,所谓流,是指数据从一个对象流向另一个对象。在C+程序中,数据可以从键盘流入到程序中,也可以从程序中流向屏幕或磁盘文件,把数据的流动抽象为“流”。流在使用前要被建立,使用后要被删除,还要使用一些特定的操作从流中获取数据
2、或向流中添加数据。从流中获取数据的操作称为提取操作,向流中添加数据的操作称为插入操作。,流实际上就是一个字节序列。在输入操作中,字节从输入设备(如键盘、磁盘、网络连接等)流向内存;在输出操作中,字节从内存流向输出设备(如显示器、打印机、磁盘、网络连接等)。如图9-1所示。在C+语言中,针对流的特点,提供了如图9-2所示的层次结构来描述流的行为,并给出了I/O流类库的操作。,图9-2 输入/输出流类层次图,表9-1 I/O流类列表,9.1.2 输入/输出标准流类 1标准流的设备名 由表9-1可见,I/O流的标准头文件是iostream.h。其中,ostream类通过其派生类ostream_wit
3、hassign支持以下预先定义的流对象:cout:标准输出。默认设备为屏幕。cerr:标准错误输出。没有缓冲,发送给它的内容立即被输出,默认设备为屏幕。,clog:标准错误输出。有缓冲,当缓冲区满时被输出,默认设备为打印机。而istream类通过其派生类istream_withassign支持预先定义的对象。cin:标准输入。默认设备为键盘。,2原理 cout是ostream类的全局对象,它在头文件iostream.h中的定义如下:ostream cout(stdout);/这里,stdout作为该对象构造时的参数对应每种基本数据类型,ostream类都存在友元,它们都在iostream.h中
4、声明。例如:ostream/.,如语句:cout(int/.,9.2 文件流类,fstream、ifstream和ofstream是文件流类,在头文件fstream.h中定义。其中,fstream是ofstream和ifstream多重继承的子类。文件流类不是标准设备,没有cout那样预先定义的全局对象。文件流类支持对磁盘文件的操作。要定义一个文件流类对象,须指定文件名和打开方式。,类ofstream用于执行文件输出,该类有以下几个构造函数:ofstream:ofstream(filedesc fd);ofstream:ofstream(filedesc fd,char*pch,int nLe
5、ngth);ofstream:ofstream(const char*szName,int nMode=ios:out,int nProt=filebuf:openprot);,类ifstream用于执行文件输入,该类有以下几个构造函数:ifstream:ifstream(filedesc fd);ifstream:ifstream(filedesc fd,char*pch,int nLength);ifstream:ifstream(const char*szName,int nMode=ios:in,int nProt=filebuf:openprot);,其中最常用的都是最后一个构造函数
6、。该函数有三个参数,第一个参数是指向要打开的文件名的字符串,后两个参数指定文件的打开模式。文件打开模式的具体标志见表9-2。可以用按位OR(|)运算符组合这些标志,它们作为枚举器定义在ios类中。,表9-2 文件打开模式,打开一个输出文件,用于在文件尾添加数据 打开一个现存文件(用于输入或输出)并查找到结尾 打开一个输入文件。对于一个ofstream文件,使用ios:in作为一个openmode,可避免删除一个现存文件中现有的内容 打开一个文件,用于输出。对于所有ofstream对象,此模式是隐含指定的 如果一个文件存在,则打开它;否则该操作失败,如果一个文件不存在,则作为新文件打开它;如果文
7、件已存在,则该操作失败 打开一个文件。如果它已经存在,则删除其中原有的内容。如果指定了ios:out,但没有指定ios:ate、ios:app和ios:in,则隐含为此模式 以二进制模式打开一个文件(默认是文本模式)Nprot是文件保护方式,它的标志如表9-3。,表9-3 文件保护方式,【例9-1】向文件myfile中写入一些信息。#includevoid main()ofstream fc(c:tempmyfile);fcConstructs an ofstream object.nAll ofstream constructors construct a filebuf object.n;
8、,注意:这里的文件名要说明其路径,要使用双斜杠,因为C+编译器理解单斜杠为字符转换符。在文件打开时,匹配了构造函数ofstream:ofstream(char*),只需要一个文件名,其它为默认。打开方式默认为ios:out|ios:trunc,即该文件用于接受程序的输出。如果该文件已存在,则其内容必须先清除,否则就新建。,如果要检查文件是否打开,则须判断成员函数fail():#include void func()ofstream fc(myfile);if(fc.fail()/fail()=1 cerrerror opening filen;return;fc.;,若要打开一个输入文件,则有
9、/.ifstream fc(myfile,ios:nocreate);/.当然,也可以通过检查fc.fail()来确定文件打开是否出错。如果要打开一个同时用于输入和输出的文件,则有/.fstream fc(myfile,ios:in|ios:out);/.,9.3 串流类,strstream、istrstream和ostrstream是串流类,在头文件strstrea.h中定义。其中,strstream是istrstream和ostrstream多重继承的子类。同样,串流类也不是标准设备,它没有cout那样预先定义的全局对象。串流类允许将fstream类定义的文件操作应用于存储区中的字符串,即
10、将字符串看作为设备。要定义一个串流类对象,须提供字符数组和数组大小。,类ostrstream用于执行串流输出,该类有以下几个构造函数:ostrstream();ostrstream(char*pch,int nLength,int nMode=ios:out);其中比较常用的是第二个构造函数,它有三个参数。第一个参数指出字符数组,第二个参数说明数组的大小,第三个参数指出打开方式。,类istrstream用于执行串流输入,该类有以下几个构造函数:istrstream(char*pch);istrstream(char*pch,int nLength);这两个构造函数都比较常用。Char*pch参
11、数指出了字符数组,int nLength参数说明数组的大小。当nLength为0时,表示把istrstream类对象连接到由pch指向的以空字符结束的字符串。,例如,下面的程序代码定义一个串流类对象,并对其进行输入操作:char str50=How are you!n;char a;istrstream ss(str);ssa;coutaendl;输出结果为 H,【例9-2】使用串流输入对字符串中的数据进行解读。#include#includechar*ioString(char*);void main()char*str=100 123.456;char*Buf0=ioString(str)
12、;coutBuf0endl;,char*ioString(char*pString)istrstream inS(pString,0);/以ios:in方式int iNumber;float fNumber;inSiNumberfNumber;/从串流中读入一个整数和浮点数char*Buf1=new char28;ostrstream outS(Buf1,28);outSiNumber=iNumber,fNumber=fNumberendl;return Buf1;,程序运行结果为 iNumber=100,fNumber=123.456 分析:在函数ioString()中,以pString为输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计语言 揣锦华第 章流类库 输入输出
链接地址:https://www.31ppt.com/p-6154088.html