第14章输入与输出流类库浅析.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章 输入与输出流类库 C++的I/O流类,是目前最常用的I/O系统。本章介绍C++输入与输出流类库。通过本章的学习,读者可以了解怎样使用C++面向对象的输入/输出流,能够格式化输入和输出,了解I/O流类的层次结构,了解怎样输入/输出用户自定义类型的对象,能够建立用户自定义的流操作符,能够确定输入/输出操作的成功与失败,能够把输出流连到输入流上。 14.1 I/O流类的结构(略) 14.2 文件流类 C++语言把每个文件都看成一个有序的字节流。每个文件或者以文件结束符结束,或者在特定的字节号处结束(该字节号通常记录在由系统维护和管理的数据结构中)。当打开一个文件时,该文件就和某个流关联起来。系统自动生成cin、cout、cerr、clog对象,流使用这些对象所关联的特定文件或输入/输出设备和程序之间建立通信通道。 要在C++中进行文件处理,就要包含头文件iostream.h和fstream.h。fstream.h头文件包括流类 ifstream(从文件输入)、ofstream(向文件输出)和fstream(从文件输入/输出)的定义。生成这些流类的对象即可打开文件。这些流类分别从istream、ostream和iostream类派生。其层次结构如图14.2。 图14.2 文件流类的继承关系 在C++中,要定义一个文件流类对象,必须规定文件名和打开方式。 类ofstream用于执行文件输出,该类有几个构造函数,其中最有用的是: ofstream::ofstream(char* pFileName, //指向要打开的文件名字符串 int nMode = ios::out, //打开方式 int nProt = filebuf::openprot); //文件保护方式 nMode参数是打开方式,它的含义见表14.1 表14.1 文件打开选择项 标志 含义 ios::app 将所有输出写入文件尾 ios::ate 打开文件以便输出,并移到文件末尾(通常用于添加数据),数据可以写入文件中的任何地方 ios::in 打开文件以便写入(ifstream默认) ios::out 打开文件以便输出(ofstream默认) ios::trunc 删除文件现有内容(是ios::out的默认操作) ios::nocreate 如果文件不存在,则文件打开失败 ios::noreplace 如果文件存在,则文件打开失败 nProt是文件保护方式,它的选择项见表14.2。 表14.2 文件保护方式选择项 标志 含义 filebuf::openprot 兼容共享方式 filebuf::sh_none 独占,不共享 filebuf::sh_read 允许读共享 file::sh_write 允许写共享 由于C++把文件看作是无结构的字节流,所以为了在文件中记录特定结构的内容,必须给文件加上记录结构。下面的程序演示了班级学生成绩表,学号作为记录关键字,文件按学号顺序建立和维护。假定用户按学号顺序键入记录,程序将把键入的记录保存并写入文件。程序示例如下。 例14.4 文件流操作实例 //演示文件流操作 #include stdafx.h #includeiostream.h #includefstream.h #includestdlib.h int main() { int regNumber; char name[30]; float grade; //使用ofstream类的构造函数打开文件 ofstream outGradeFile(C:\\grade.dat,ios::out); //也可以先创建输出流类对象,再用open操作打开文件 //ofstream outGradeFile; //outGradeFile.open(C:\\grade.dat,ios::out); if(!outGradeFile){ cerr文件不能被打开!endl; exit(1);//函数原形定义在stdlib.h中 } cout请输入学号,姓名,和成绩,\n 按输入文件结束符结束。\n? ; while(cinregNumbernamegrade){ outGradeFileregNumber name grade\n; cout? ; } outGradeFile.close(); ifstream inGradeFile(C:\\grade.dat,ios::in); //也可以先创建输入流类对象,再用open操作打开文件 /

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档