C++面向对象程序设计(第二版)-第八章_数据流与文件的输入输出_第1页
C++面向对象程序设计(第二版)-第八章_数据流与文件的输入输出_第2页
C++面向对象程序设计(第二版)-第八章_数据流与文件的输入输出_第3页
C++面向对象程序设计(第二版)-第八章_数据流与文件的输入输出_第4页
C++面向对象程序设计(第二版)-第八章_数据流与文件的输入输出_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+面向对象程序设计(第二版)主编 曹静 中国水利水电出版社C+面向对象程序设计(第二版)第八章 数据流与文件的输入/输出2022年3月6日星期日C+面向对象程序设计第八章 数据流与文件的输入/输出t8.1 I/O流的概念t8.2 数据流的控制t8.3 文件的输入/输出t项目设计7 校园信息管理系统中的数据存储2022年3月6日星期日C+面向对象程序设计8.1 I/O流的概念t流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。t当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象。t程序建立一个流对象,并指定这个流对象与某个文件对象

2、建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用。t读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。2022年3月6日星期日C+面向对象程序设计8.2 数据流的控制t8.2.1 数据流的格式控制t8.2.2 常用的输入/输出函数t8.2.3 数据流的错误侦测2022年3月6日星期日C+面向对象程序设计8.2.1 数据流的格式控制t插入()运算符是为所有标准C+数据类型定义的,其作用是向流中传送和读取数据。插入和提取运算符与预先定义的操作符一起工作,用来控制输入和输出格式。1输出宽度l为了调整输出时的显示宽度,可以通过调用width成员函数为每个项(i

3、tem)指定输出宽度或在流中放入setw操纵符。 2022年3月6日星期日C+面向对象程序设计8.2.1 数据流的格式控制2对齐方式l输出流的默认对齐方式为文本右对齐,程序中可以用setiosflags和resetiosflags操作符重设对齐方式。 3精度l使用setprecision操作符改变精度,该操作符有两个标志,ios:fixed和ios:scientific。 4进制l可以用dec、oct和hex操纵符设置输入和输出的默认进制。 2022年3月6日星期日C+面向对象程序设计8.2.2 常用的输入/输出函数常用istream成员函数包含:tint istream:get()l如果输入

4、流包括附加的数据,函数取得并返回下一个字符;否则它返回EOF。tistream& istream:get(char &c)l如果输入流包括附加的数据,函数取得并将下一个字符分配给c;否则就是没有定义对c的作用。返回一个对*this(调用对象)的引用。2022年3月6日星期日C+面向对象程序设计8.2.2 常用的输入/输出函数tistream& istream:get(char s,int n,char delim=n)l从输入流获取字符并将它们分配给s直到下面的一个条件发生:取得n-1个字符,没有输入字符了,或者下一个接收的字符的值为delim。tistream&

5、; istream:getline(char s,int n,char delim=n)l从输入流获取字符并将它们分配给s直到下面的一个条件发生:取得n-1个字符,没有输入字符了,或者下一个接收的字符的值为delim。 2022年3月6日星期日C+面向对象程序设计8.2.2 常用的输入/输出函数tint istream:peak()l如果输入流包括附加的数据,函数返回下一个接收的字符;否则它返回EOF。tistream& istream:unget(char c)l字符c被送到输入流。它将是下一个要接收的字符。函数返回一个对*this的引用。库iostream还提供对ios成员函数的访

6、问,一些程序在输入流中检测文件尾。tbool ios:eof()l如果流中达到文件尾则返回真;否则函数返回假。2022年3月6日星期日C+面向对象程序设计8.2.2 常用的输入/输出函数库iostream还提供两个类似get()和getline()的ostream成员函数。tostream& ostream:put(char c)l将字符c插入输入流中。函数返回一个对*this的引用。tostream& ostream:write(const char s,int n)l将s中的n个字符插入到输入流中。空字符也是有效的。函数返回一个对*this的引用。库iostream还提供常

7、用的ostream成员函数。tostream& ostream:flush()l强制任何没有完成的操作符插入完成。函数返回一个对*this的引用。2022年3月6日星期日C+面向对象程序设计8.2.3 数据流的错误侦测 流cerr和clog把显示输出到默认错误日志上,该日志通常是控制台显示器。t对流cerr的每个插入请求应该立即送出显示。下面给出几个错误消息的例子:lcerr系统将在10秒后重起!n;lcerr输入值无效,请重新输入!n; 2022年3月6日星期日C+面向对象程序设计8.2.3 数据流的错误侦测t如果出于效率的缘故,则有必要缓冲错误和系统状态消息,这样就应该使用带缓冲的

8、错误流clog。像cerr一样,clog通常是定向到显示器。下面给出几个样例:lclogUserName成功登陆!n;lclog有新邮件!n;2022年3月6日星期日C+面向对象程序设计8.3 文件的输入/输出t8.3.1 fstream类t8.3.2 格式化文字模式的文件I/Ot8.3.3 二进制模式的文件I/Ot8.3.4 文件指针的使用2022年3月6日星期日C+面向对象程序设计8.3.1 fstream类tC+里负责文件输入/输出的类主要有ifstream(文件输入)、ofstream(文件输出)以及fstream(文件输入/输出)。t所谓文件的I/O(输入/输出)是指以程序为主的角度

9、而言,文件打开为输入状态时(in),表示程序将由文件读入数据;文件打开为输出状态时(out),表示程序将输出数据至文件。t我们通常将数据由文件输入到程序称之为读取,程序将数据输出到文件称之为写入。 2022年3月6日星期日C+面向对象程序设计8.3.1 fstream类tfstream类可以用于将数据写入文件,或读取文件的数据。要使用fstream类执行文件的I/O时,首先必须先定义一个fstream类的对象。例如:lfstream file; / 定义一个fstream对象t利用fstream所提供的open成员函数 ,打开一个文件。传入open函数的参数有两个,一个传入欲打开的磁盘文件的名

10、称,另一个传入打开该文件的模式参数。lfile.open(MyFile.txt,ios:in); / 在读取模式下打开MyFile.txt文件 2022年3月6日星期日C+面向对象程序设计8.3.1 fstream类t表8-1 文件流的文件打开模式模式参数 功 能ios:in文件打开为读取(输入)状态,此为istream类的默认模式参数ios:out文件打开为写入(输出)状态,此为ostream类的默认模式参数ios:ate打开一个现存文件,从文件结尾处读取(输入)或写入(输出)ios:app打开一个输出文件从文件结尾写入(输出)数据ios:trunc打开一个文件,如果它已经存在,就删除其中原

11、有的内容ios:nocreate如果一个文件存在则打开它,否则该操作失败ios:noreplace如果一个文件不存在则作为新文件打开它;如果文件已存在,则该操作失败ios:binary以二进制模式打开一个文件,默认是文本模式2022年3月6日星期日C+面向对象程序设计8.3.1 fstream类t表8-2 文件处理函数函 数 功 能 说 明open(filename,mode)以mode模式打开名为filename的文件close()关闭文件is_open()检查文件是否为打开状态,是则返回真,否则返回假write(str,size)将str数组中size个字符写入到文件中read(str,s

12、ize)从文件中读取数据至文件结尾,并设定给str数组,但至多不超过size个字符2022年3月6日星期日C+面向对象程序设计8.3.1 fstream类tC+的文件I/O模式分为两种,一种为格式化文字模式,另一种为二进制模式,默认的文件I/O模式为文字模式。t当使用格式化文字模式时,输出至文件的内容将被储存为字符,因此,格式化文字模式适合储存字符或字符串。t如果以二进制的方式处理数字,不论是储存的方式,还是占有文件空间的方式都与其储存在内存中的方式相同,因此,在储存数字时使用二进制模式是比较合适的。 2022年3月6日星期日C+面向对象程序设计8.3.2 格式化文字模式的文件I/Ot文件的最

13、小单位为字符,由字符组成一个字段,好几个字段组成一个记录,而一个文件则由好几笔记录组成。t将数据输入输出到文件中,除了可以使用write和read函数外,还可以使用“”运算符,而所有在8.2.1节中提及的格式控制方法,均可以在文件I/O中使用。2022年3月6日星期日C+面向对象程序设计8.3.3 二进制模式的文件I/Ot在二进制模式下,文件的I/O将利用write和read函数将所有数据以字节形式储存至文件里。t对于原本就是字符的数据,并不需要转型,即可读取/写入到文件里;但对于数字型的数据,则必须转为字符指针,然后传入write和read函数。2022年3月6日星期日C+面向对象程序设计8

14、.3.4 文件指针的使用t文件指针是文件读取/写入数据时插入或输出的位置。文件指针有两种,一个是写入指针,另一个是读取指针。当文件被打开时,这两个指针都将被设定指向文件的起始处。t在ios类里,定义了三个特定的文件指针。通过指针函数与特定的指针的配合使用,可供在处理文件I/O时移动文件指针之用。这三个位移指针分别是ios:beg(文件开头)、ios:end(文件结尾)、ios:cur(当前的指针位置)。 2022年3月6日星期日C+面向对象程序设计8.3.4 文件指针的使用t表8-3 文件指针函数文件指针函数 功 能 说 明seekg(pos,seek_dir)设定文件读取(输入)指针到距离文

15、件某一特定指针pos个字节的位置。特定指针由seek_dir指定,有以下三种ios:beg(文件起始)、ios:cur(当前文件指针的位置)或ios:end(文件结尾)pos=tellg()返回当前文件读取指针的位置seekp(pos,seek_dir)设定文件写入(输出)指针到距离文件某一特定指针pos个字节的位置。特定指针由seek_dir指定,有以下三种ios:beg(文件起始)、ios:cur(当前文件指针的位置)或ios:end(文件结尾)pos=tellp()返回当前文件写入指针的位置2022年3月6日星期日C+面向对象程序设计项目设计7 校园信息管理系统中的数据存储t1 设计题目校园信息管理系统中的数据存储t2 设计概要 要求掌握面向对象程序设计方法,I/O流的概念,以及如何利用文件存储对象。t3 系统分析t4 功能模块设计2022年3月6日星期日C+面向对象程序设计3 系统分析t现在校园信息管理系统已经能够完成人员信息的输入、显示和分析等一系列工作,但是现在的程序并不能将信息长期保存,所以,将数据永久的保存是校园信息管理系统必

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论