版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I/O流、读写文件
和串行化I/O流、读写文件
和串行化《面向对象技术与VisualC++》--第7章2主要内容流的概念非格式化输入/输出格式化输入/输出C++中对文件的操作MFC中提供的对文件操作的类文档类中的操作图形的保存《面向对象技术与VisualC++》--第7章2主要内容流《面向对象技术与VisualC++》--第7章3流的概念
所谓“流”,是从源(source)到矢(sink)的数据流的一个抽象。流动的方向不同,构成输入/输出流,即I/O流。数据可以从文件流入到程序,也可以从程序流向文件。键盘、屏幕、打印机和通信端口都可看作是扩充文件。从流中获取数据的操作称为提取操作向流中添加数据的操作称为插入操作。数据的输入/输出就是通过I/O流来实现的。《面向对象技术与VisualC++》--第7章3流的概念《面向对象技术与VisualC++》--第7章4I/O流类库预定义了4个流类对象cin处理标准输入cout处理标准输出cerr处理标准错误输出(非缓冲方式)clog处理标准错误输出(缓冲方式)ostream类istream类流的概念
《面向对象技术与VisualC++》--第7章4I/O流类《面向对象技术与VisualC++》--第7章5非格式化输入/输出
定义:按系统预定义的格式进行的输入/输出。如何实现:cin用来处理标准输入,即键盘输入;cout用来处理标准输出,即屏幕输出。它们被定义在iostream.h头文件中。在使用cout和cin前,要用编译预处理命令将所使用的头文件包含到源程序中,其格式如下:#include<iostream.h>《面向对象技术与VisualC++》--第7章5非格式化输《面向对象技术与VisualC++》--第7章6非格式化输出
使用cout的格式如下:
cout<<E1<<E2<<…<<Em;
其中,E1、E2、…、Em为均为表达式。功能是计算各表达式的值,并将结果输出到屏幕当前光标位置处。插入符(<<)重载
如果要输出的是非基本数据类型,应当如何?必须自定义运算符重载函数。《面向对象技术与VisualC++》--第7章6非格式化输《面向对象技术与VisualC++》--第7章7非格式化输入
使用cin的格式如下:
cin>>V1>>V2>>…>>Vn;
其中,V1、V2、…、Vn都是变量。功能:暂停执行程序,等待用户从键盘输入数据,各数据间用空格或Tab键分隔,输入数据类型要与接受变量类型一致,输完后,按回车键结束。提取符(>>)重载《面向对象技术与VisualC++》--第7章7非格式化输《面向对象技术与VisualC++》--第7章8格式化输入/输出
定义:按特定的格式进行输入/输出。例如,设定输出宽度、输出精度等。C++提供了两种进行输入/输出格式化的方法:用ios类成员函数进行格式化。用专门的操作符函数进行格式化。《面向对象技术与VisualC++》--第7章8格式化输入《面向对象技术与VisualC++》--第7章9
文件的输入/输出
根据数据的组织形式,可分为文本文件和二进制文件。C++有三种文件流类:
ifstream
从istream派生提供文件输入操作
ofstream
从ostream派生提供文件输出操作
fstream
从iostream派生提供文件输入/输出双向操作这些文件流类都定义在fstream.h头文件中《面向对象技术与VisualC++》--第7章9文件的输《面向对象技术与VisualC++》--第7章10文件操作的一般步骤
为文件定义一个流类对象;使用成员函数open()打开文件;进行读写操作。即输入/输出操作;使用成员函数close()关闭文件。《面向对象技术与VisualC++》--第7章10文件操作《面向对象技术与VisualC++》--第7章11MFC中提供的对文件操作的类CFile类构造函数、Write、ReadCArchive类可将一个复杂的对象以二进制形式永久保存到硬盘中,以后可再从永久存储中加载数据。这一过程称“串行化”。构造函数、>>和<<文档类中的操作
Serialize:当打开文件或保存文件时,会调用该函数。《面向对象技术与VisualC++》--第7章11MFC中《面向对象技术与VisualC++》--第7章12图形的保存生成一个可串行化的类让你的类从CObject派生覆盖Serialize成员函数在类声明中使用Declare_Serial宏定义一个不带参的构造函数在类实现文件中使用IMPLEMENT_SERIAL宏。《面向对象技术与VisualC++》--第7章12图形的保《面向对象技术与VisualC++》--第7章13图形的保存由文档类暂存图形数据改写文档类的Serialize函数堆上分配的内存释放在DeleteContents中释放。《面向对象技术与VisualC++》--第7章13图形的保《面向对象技术与VisualC++》--第7章14StringTable中IDR_MAINFRAME字符串资源中各子串的含义(1)CDocTemplate::windowTitle,主窗口标题栏上的字符串,MDI程序不需要指定,将以IDR_MAINFRAME字符串为默认值。(2)CDocTemplate::docName,缺省文档的名称。如果没有指定,缺省文档的名称是无标题。(3)CDocTemplate::fileNewName,文档类型的名称。如果应用程序支持多种类型的文档,此字符串将显示在"File/New"对话框中。如果没有指定,就不能够在"File/New"对话框处理这种文件。《面向对象技术与VisualC++》--第7章14Stri《面向对象技术与VisualC++》--第7章15StringTable中IDR_MAINFRAME字符串资源中各子串的含义(4)CDocTemplate::filterName,文档类型的描述和一个适用于此类型的通配符过滤器。这个字符串将出现在“File/Open”对话框中的文件类型列表框中。要和CDocTemplate::filterExt一起使用。(5)CDocTemplate::filterExt,文档的扩展名。如果没有指定,就不能够在“File/Open”对话框中处理这种文档。要和CDocTemplate::filterName一起使用。(6)CDocTemplate::regFileTypeId,如果你以::RegisterShellFileTypes向系统的注册表注册文件类型,此值会出现在HEY_CLASSES_ROOT之下成为其子项,并仅供Windows内部使用。如果没有指定,这种文件类型就无法注册。(7)CDocTemplate::regFileTypeName,这也是存储在注册表中的文件类型名称。它会显示于程序中用以访问注册表的对话框内。《面向对象技术与VisualC++》--第7章15Stri《面向对象技术与VisualC++》--第7章16在C++中,打开一个文件就是将此文件与一个流建立关联;关闭一个文件就是取消这种关联。open()函数的原型为:voidopen(char*filename,intmode,intaccess);
说明:第一个参数是文件名,可包含路径;第二个参数的值决定文件的使用方式,见表7-4;第三个参数的值决定文件的访问方式。表7-5。
mode有缺省值:对类ifstream是ios::in;对ofstream是ios::outaccess的缺省值为0(一般文件)打开文件
《面向对象技术与VisualC++》--第7章16在C++《面向对象技术与VisualC++》--第7章17关闭文件的一般格式如下:
<流类对象>.close();
说明:close()不带任何参数,也没有返回值。其功能是:使流对象和文件脱离关联。也可以通过流类的析构函数实现同样功能。但通常,操作完成时应马上关闭文件,以免误操作。关闭文件
《面向对象技术与VisualC++》--第7章17关闭文件《面向对象技术与VisualC++》--第7章18#include<iostream.h>classthree_d{ intx,y,z;public: three_d(inta,intb,intc){x=a;y=b;z=c;}
friendostream&operator<<(ostream&stream,three_dobj);};ostream&operator<<(ostream&stream,three_dobj){ stream<<obj.x<<","; stream<<obj.y<<","; stream<<obj.z<<"\n"; returnstream;}voidmain(){ three_da(1,2,3),b(3,4,5),c(5,6,7); cout<<a<<b<<c;}《面向对象技术与VisualC++》--第7章18#inc《面向对象技术与VisualC++》--第7章19#include<iostream.h>voidmain(){ inti; i=cout.width();//返回当前的输出宽度,默认为0 cout<<"width:"<<i<<endl; cout.width(8);//设置输出宽度为8 cout<<cout.width()<<"(newwidth)"<<endl;}《面向对象技术与VisualC++》--第7章19#inc《面向对象技术与VisualC++》--第7章20#include<iostream.h>#include<iomanip.h>voidmain(){char*p="12345",*q="678";charf[10],g[10]; inti=10; cout<<p<<setw(6)<<q<<setw(4)<<p<<q<<endl;//设置输出宽度
cin>>setw(4)>>f>>g;//设置输入宽度
cout<<f<<endl<<g<<endl<<"i:"<<i<<endl;}《面向对象技术与VisualC++》--第7章20#inc《面向对象技术与VisualC++》--第7章21ofstreamout;//定义输出流类对象out.open(“test”,ios::out,0);//也可简写为out.open(“test”);ifstreamin;//定义输入流类对象in.open(“test”,ios::in,0);//也可简写为in.open(“test”);fstreammystream;//定义输入/输出流类对象mystream.open(“test”,ios::in|ios::out,0);说明:1、如果打开失败,则流类对象的值为0。因此使用文件前,先测试一下是否打开成功。2、ifstream、ofstream和fstream类都有构造函数,与open()函数具有相同的参数和缺省值,因此,也可调用构造函数来打开文件。如:ifstreammystream(“myfile”);ofstreammystream(“myfile”);《面向对象技术与VisualC++》--第7章21ofst《面向对象技术与VisualC++》--第7章22#include<fstream.h>voidmain(){ ofstreamostrm;
//定义流类对象
ostrm.open("f1.dat");//打开文件
ostrm<<120<<endl;//写操作
ostrm<<310.85<<endl; ostrm.close();//关闭文件
ifstreamistrm("f1.dat");//定义流类对象
intn; doubled; istrm>>n>>d;//读操作
cout<<n<<","<<d<<endl; istrm.close();//关闭文件}《面向对象技术与VisualC++》--第7章22#incI/O流、读写文件
和串行化I/O流、读写文件
和串行化《面向对象技术与VisualC++》--第7章24主要内容流的概念非格式化输入/输出格式化输入/输出C++中对文件的操作MFC中提供的对文件操作的类文档类中的操作图形的保存《面向对象技术与VisualC++》--第7章2主要内容流《面向对象技术与VisualC++》--第7章25流的概念
所谓“流”,是从源(source)到矢(sink)的数据流的一个抽象。流动的方向不同,构成输入/输出流,即I/O流。数据可以从文件流入到程序,也可以从程序流向文件。键盘、屏幕、打印机和通信端口都可看作是扩充文件。从流中获取数据的操作称为提取操作向流中添加数据的操作称为插入操作。数据的输入/输出就是通过I/O流来实现的。《面向对象技术与VisualC++》--第7章3流的概念《面向对象技术与VisualC++》--第7章26I/O流类库预定义了4个流类对象cin处理标准输入cout处理标准输出cerr处理标准错误输出(非缓冲方式)clog处理标准错误输出(缓冲方式)ostream类istream类流的概念
《面向对象技术与VisualC++》--第7章4I/O流类《面向对象技术与VisualC++》--第7章27非格式化输入/输出
定义:按系统预定义的格式进行的输入/输出。如何实现:cin用来处理标准输入,即键盘输入;cout用来处理标准输出,即屏幕输出。它们被定义在iostream.h头文件中。在使用cout和cin前,要用编译预处理命令将所使用的头文件包含到源程序中,其格式如下:#include<iostream.h>《面向对象技术与VisualC++》--第7章5非格式化输《面向对象技术与VisualC++》--第7章28非格式化输出
使用cout的格式如下:
cout<<E1<<E2<<…<<Em;
其中,E1、E2、…、Em为均为表达式。功能是计算各表达式的值,并将结果输出到屏幕当前光标位置处。插入符(<<)重载
如果要输出的是非基本数据类型,应当如何?必须自定义运算符重载函数。《面向对象技术与VisualC++》--第7章6非格式化输《面向对象技术与VisualC++》--第7章29非格式化输入
使用cin的格式如下:
cin>>V1>>V2>>…>>Vn;
其中,V1、V2、…、Vn都是变量。功能:暂停执行程序,等待用户从键盘输入数据,各数据间用空格或Tab键分隔,输入数据类型要与接受变量类型一致,输完后,按回车键结束。提取符(>>)重载《面向对象技术与VisualC++》--第7章7非格式化输《面向对象技术与VisualC++》--第7章30格式化输入/输出
定义:按特定的格式进行输入/输出。例如,设定输出宽度、输出精度等。C++提供了两种进行输入/输出格式化的方法:用ios类成员函数进行格式化。用专门的操作符函数进行格式化。《面向对象技术与VisualC++》--第7章8格式化输入《面向对象技术与VisualC++》--第7章31
文件的输入/输出
根据数据的组织形式,可分为文本文件和二进制文件。C++有三种文件流类:
ifstream
从istream派生提供文件输入操作
ofstream
从ostream派生提供文件输出操作
fstream
从iostream派生提供文件输入/输出双向操作这些文件流类都定义在fstream.h头文件中《面向对象技术与VisualC++》--第7章9文件的输《面向对象技术与VisualC++》--第7章32文件操作的一般步骤
为文件定义一个流类对象;使用成员函数open()打开文件;进行读写操作。即输入/输出操作;使用成员函数close()关闭文件。《面向对象技术与VisualC++》--第7章10文件操作《面向对象技术与VisualC++》--第7章33MFC中提供的对文件操作的类CFile类构造函数、Write、ReadCArchive类可将一个复杂的对象以二进制形式永久保存到硬盘中,以后可再从永久存储中加载数据。这一过程称“串行化”。构造函数、>>和<<文档类中的操作
Serialize:当打开文件或保存文件时,会调用该函数。《面向对象技术与VisualC++》--第7章11MFC中《面向对象技术与VisualC++》--第7章34图形的保存生成一个可串行化的类让你的类从CObject派生覆盖Serialize成员函数在类声明中使用Declare_Serial宏定义一个不带参的构造函数在类实现文件中使用IMPLEMENT_SERIAL宏。《面向对象技术与VisualC++》--第7章12图形的保《面向对象技术与VisualC++》--第7章35图形的保存由文档类暂存图形数据改写文档类的Serialize函数堆上分配的内存释放在DeleteContents中释放。《面向对象技术与VisualC++》--第7章13图形的保《面向对象技术与VisualC++》--第7章36StringTable中IDR_MAINFRAME字符串资源中各子串的含义(1)CDocTemplate::windowTitle,主窗口标题栏上的字符串,MDI程序不需要指定,将以IDR_MAINFRAME字符串为默认值。(2)CDocTemplate::docName,缺省文档的名称。如果没有指定,缺省文档的名称是无标题。(3)CDocTemplate::fileNewName,文档类型的名称。如果应用程序支持多种类型的文档,此字符串将显示在"File/New"对话框中。如果没有指定,就不能够在"File/New"对话框处理这种文件。《面向对象技术与VisualC++》--第7章14Stri《面向对象技术与VisualC++》--第7章37StringTable中IDR_MAINFRAME字符串资源中各子串的含义(4)CDocTemplate::filterName,文档类型的描述和一个适用于此类型的通配符过滤器。这个字符串将出现在“File/Open”对话框中的文件类型列表框中。要和CDocTemplate::filterExt一起使用。(5)CDocTemplate::filterExt,文档的扩展名。如果没有指定,就不能够在“File/Open”对话框中处理这种文档。要和CDocTemplate::filterName一起使用。(6)CDocTemplate::regFileTypeId,如果你以::RegisterShellFileTypes向系统的注册表注册文件类型,此值会出现在HEY_CLASSES_ROOT之下成为其子项,并仅供Windows内部使用。如果没有指定,这种文件类型就无法注册。(7)CDocTemplate::regFileTypeName,这也是存储在注册表中的文件类型名称。它会显示于程序中用以访问注册表的对话框内。《面向对象技术与VisualC++》--第7章15Stri《面向对象技术与VisualC++》--第7章38在C++中,打开一个文件就是将此文件与一个流建立关联;关闭一个文件就是取消这种关联。open()函数的原型为:voidopen(char*filename,intmode,intaccess);
说明:第一个参数是文件名,可包含路径;第二个参数的值决定文件的使用方式,见表7-4;第三个参数的值决定文件的访问方式。表7-5。
mode有缺省值:对类ifstream是ios::in;对ofstream是ios::outaccess的缺省值为0(一般文件)打开文件
《面向对象技术与VisualC++》--第7章16在C++《面向对象技术与VisualC++》--第7章39关闭文件的一般格式如下:
<流类对象>.close();
说明:close()不带任何参数,也没有返回值。其功能是:使流对象和文件脱离关联。也可以通过流类的析构函数实现同样功能。但通常,操作完成时应马上关闭文件,以免误操作。关闭文件
《面向对象技术与VisualC++》--第7章17关闭文件《面向对象技术与VisualC++》--第7章40#include<iostream.h>classthree_d{ intx,y,z;public: three_d(inta,intb,intc){x=a;y=b;z=c;}
friendostream&operator<<(ostream&stream,three_dobj);};ostream&operator<<(ostream&stream,three_dobj){ stream<<obj.x<<","; stream<<obj.y<<","; stream<<obj.z<<"\n"; returnstream;}voidmain(){ three_da(1,2,3),b(3,4,5),c(5,6,7); cout<<a<<b<<c;}《面向对象技术与VisualC++》--第7章18#inc《面向对象技术与VisualC++》--第7章41#include<iostream.h>voidmain(){ inti; i=cout.width();//返回当前的输出宽度,默认为0 cout<<"width:"<<i<<endl; cout.width(8);//设置输出宽度为8 cout<<cout.width()<<"(newwidth)"<<endl;}《面向对象技术与VisualC++》--第7章19#inc《面向对象技术与VisualC++》--第7章42#include<iostream.h>#include<iomanip.h>voidmain(){char*p="12345",*q="678";charf[10],g[10];
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年全国人大代表建言:推动碳资产变资本加快建设统一碳市场
- 2026年生物质电厂设备维护检修标准化手册
- 2026届浙江省宁波市海曙区三校联考初三第二学期综合练习(一)化学试题含解析
- 2026届福建省郊尾、枫亭五校教研小片区市级名校初三下学期第一次阶段考试(5月)化学试题含解析
- 辽宁省辽阳县重点名校2026届广东中考全真生物试题模拟试卷含解析
- 2026年广西南宁市天桃实验校联盟测试化学试题含解析
- 四川省乐山市2026年初三第二次调查研究考试化学试题含解析
- 云南省涧南彝族自治县市级名校2026届初三第三次月考化学试题含解析
- 2026年江西省抚州市宜黄县达标名校下学期初三化学试题第三次统一练习试题含解析
- 2026年液晶电视机开关电源电路故障快速诊断
- 2026年六安职业技术学院单招职业适应性考试题库附答案详解(预热题)
- 2026天津市津南区事业单位招聘37人考试参考试题及答案解析
- 2026年南京机电职业技术学院单招职业适应性测试题库(含答案详解)
- 2026年春节后复工复产“开工第一课”安全生产培训课件
- 专题学习《改革开放简史》
- 地下车库消防系统施工方案
- 灵活用工人员安全培训课件
- 用电安全进校园宣传课件
- 2026年中国速冻水饺市场运行(产业链、市场规模、价格等)现状及未来发展趋势分析
- (新教材)2026年人教版一年级下册数学 第二单元 20以内的退位减法 整 理和复习 课件
- 2026年无锡科技职业学院单招综合素质考试必刷测试卷必考题
评论
0/150
提交评论