- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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操作打开文件
/
您可能关注的文档
- 毕业设计单片机教学实验板电路设计浅析.doc
- 21、建筑消防设施检测记录(总)表(GA-503)(GA-836)技巧.doc
- 2017年执业医师考试重点-内分泌系统技巧.doc
- 地铁车站施工钢支撑吊装方案浅析.doc
- 地铁车站围护结构钢支撑技术交底浅析.doc
- 毕业设计及中职论文浅析.doc
- 21种凉菜的做法技巧.doc
- 2017年中考化学复习:金属和金属复习(30张)(共30张)技巧.ppt
- 毕业设计论文—30万吨合成氨设计浅析.doc
- 地铁鲤鱼池站主体结构实体检测方案浅析.doc
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)