- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对应于这个标志字各状态位,ios类还提供了以下成员函数来检测或设置流的状态: int rdstate(); //返回流的当前状态标志字 int eof(); //返回非0值表示到达文件尾 int fail(); //返回非0值表示操作失败 int bad(); //返回非0值表示出现错误 int good(); //返回非0值表示流操作正常 int clear(int flag=0); //将流的状态设置为flag 为提高程序的可靠性,我们应在程序中检测I/O流的操作是否正常。当检测到流操作出现错误时,可以通过异常处理来解决问题。 13.5 文 件 流 文件是存储在磁盘、磁带等外部设备上的数据集合,每一个文件都必须有一个惟一名字。 使用文件前必须首先打开,使用完毕后必须关闭文件。 对文件的操作是由文件流类完成的。文件流类在流与文件之间建立连接,使用这些文件流类必须用#include编译指令将头文件fstream.h包含进来。 13.5.1 文件的打开与关闭 流可以分为3类:输入流、输出流以及输入/输出流,相应地必须将流说明为ifstream、ofstream以及fstream类的对象。例如: ifstream ifile; //说明一个输入流 ofstream ofile; //说明一个输出流 fstream iofile; //说明—个输入/输出流 说明了流对象之后,可使用函数open()打开文件。文件的打开即是在流与文件之间建立一个连接。open()的函数原型为: void open(const char * filename, int mode, int prot=filebuf::openprot); 其中,filename是文件名字,它可包含路径说明。 mode说明文件打开的模式,它对文件的操作影响重大,mode的取值必须是以下值之一: ???? ios::in 打开文件进行读操作 ? ??? ios::out 打开文件进行写操作 ? ??? ios::ate 打开时文件指针定位到文件尾 ? ??? ios::app 添加模式,所有增加都在文件尾部进行 ? ??? ios::trunc 如果文件已存在则清空原文件 ? ??? ios::nocreate 如果文件不存在则打开失败 ? ??? ios::noreplace 如果文件存在则打开失败 ? ??? ios::binary 二进制文件(非文本文件) 对于ifstream流,mode的默认值为ios::in;对于ofstream流,mode的默认值为ios::out。 prot决定文件的访问方式,取值如下: ? ??? 0 普通文件 ? ??? 1 只读文件 ? ??? 2 隐含文件 ? ??? 4 系统文件 一般情况下,该访问方式使用默认值。 与其他状态标志一样,mode的符号常量可以用位或运算“|”组合在一起,如ios::in|ios::binary表示以只读方式打开二进制文件。例如: ifstream ifile; ifile.open(c:\\vc\\abc.txt,ios::ate); 表示以文本文件形式打开C:\vc目录下的abc.txt文件,文件指针定位到文件尾,准备进行读文件操作。而操作: ofstream ofile; ofile.open(c:\\vc\\abc.txt,ios::binary); 表示以二进制文件形式打开C:\vc目录下的abc.txt文件,准备进行写文件操作。 其中,文件名中“\\”的第一个“\”为转义字符。 除了open()成员函数外,ifstream、ofstream和fstream三类流的构造函数也可以打开文件,其参数同open()函数。例如: ifstream ifile(c:\\vc\\abc.txt ); 说明一个输入流对象的同时,将这个流与文件“c:\vc\abc.txt”连接起来,使流ifi
原创力文档


文档评论(0)