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

下载本文档

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

文档简介

C++面向对象程序设计(第二版)

主编曹静中国水利水电出版社第1页C++面向对象程序设计(第二版)

第八章数据流与文献输入/输出第2页10十月2023C++面向对象程序设计第八章数据流与文献输入/输出8.1I/O流概念8.2数据流控制8.3文献输入/输出项目设计7校园信息管理系统中数据存放第3页10十月2023C++面向对象程序设计8.1I/O流概念流是一种抽象,它负责在数据生产者和数据消费者之间建立联系,并管理数据流动。当程序与外界环境进行信息交换时,存在着两个对象,一种是程序中对象,另一种是文献对象。程序建立一种流对象,并指定这个流对象与某个文献对象建立连接,程序操作流对象,流对象通过文献系统对所连接文献对象产生作用。读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。第4页10十月2023C++面向对象程序设计8.2数据流控制8.2.1数据流格式控制8.2.2常用输入/输出函数8.2.3数据流错误侦测第5页10十月2023C++面向对象程序设计8.2.1数据流格式控制插入(<<)和提取(>>)运算符是为所有标准C++数据类型定义,其作用是向流中传送和读取数据。插入和提取运算符与预先定义操作符一起工作,用来控制输入和输出格式。1.输出宽度为了调整输出时显示宽度,能够通过调用width组员函数为每个项(item)指定输出宽度或在流中放入setw操纵符。第6页10十月2023C++面向对象程序设计8.2.1数据流格式控制2.对齐方式输出流默认对齐方式为文本右对齐,程序中能够用setiosflags和resetiosflags操作符重设对齐方式。3.精度使用setprecision操作符变化精度,该操作符有两个标志,ios::fixed和ios::scientific。4.进制能够用dec、oct和hex操纵符设置输入和输出默认进制。第7页10十月2023C++面向对象程序设计8.2.2常用输入/输出函数常用istream组员函数包括:intistream::get()假如输入流包括附加数据,函数取得并返回下一种字符;不然它返回EOF。istream&istream::get(char&c)假如输入流包括附加数据,函数取得并将下一种字符分派给c;不然就是没有定义对c作用。返回一种对*this(调用对象)引用。第8页10十月2023C++面向对象程序设计8.2.2常用输入/输出函数istream&istream::get(chars[],intn,chardelim='\n')从输入流获取字符并将它们分派给s直到下面一种条件发生:取得n-1个字符,没有输入字符了,或者下一种接收字符值为delim。istream&istream::getline(chars[],intn,chardelim='\n')从输入流获取字符并将它们分派给s直到下面一种条件发生:取得n-1个字符,没有输入字符了,或者下一种接收字符值为delim。第9页10十月2023C++面向对象程序设计8.2.2常用输入/输出函数intistream::peak()假如输入流包括附加数据,函数返回下一种接收字符;不然它返回EOF。istream&istream::unget(charc)字符c被送到输入流。它将是下一种要接收字符。函数返回一种对*this引用。库iostream还提供对ios组员函数访问,某些程序在输入流中检测文献尾。boolios::eof()假如流中达成文献尾则返回真;不然函数返回假。第10页10十月2023C++面向对象程序设计8.2.2常用输入/输出函数库iostream还提供两个类似get()和getline()ostream组员函数。ostream&ostream::put(charc)将字符c插入输入流中。函数返回一种对*this引用。ostream&ostream::write(constchars[],intn)将s中n个字符插入到输入流中。空字符也是有效。函数返回一种对*this引用。库iostream还提供常用ostream组员函数。ostream&ostream::flush()强制任何没有完成操作符插入完成。函数返回一种对*this引用。第11页10十月2023C++面向对象程序设计8.2.3数据流错误侦测流cerr和clog把显示输出到默认错误日记上,该日记一般是控制台显示屏。对流cerr每个插入祈求应当立即送出显示。下面给出几个错误消息例子:cerr<<"系统将在10秒后重起!\n";cerr<<"输入值无效,请重新输入!\n";

第12页10十月2023C++面向对象程序设计8.2.3数据流错误侦测假如出于效率缘故,则有必要缓冲错误和系统状态消息,这样就应当使用带缓冲错误流clog。像cerr同样,clog一般是定向到显示屏。下面给出几个样例:clog<<UserName<<"成功登陆!\n";clog<<"有新邮件!\n";第13页10十月2023C++面向对象程序设计8.3文献输入/输出8.3.1fstream类8.3.2格式化文字模式文献I/O8.3.3二进制模式文献I/O8.3.4文献指针使用第14页10十月2023C++面向对象程序设计8.3.1fstream类C++里负责文献输入/输出类主要有ifstream(文献输入)、ofstream(文献输出)以及fstream(文献输入/输出)。所谓文献I/O(输入/输出)是指以程序为主角度而言,文献打开为输入状态时(in),表达程序将由文献读入数据;文献打开为输出状态时(out),表达程序将输出数据至文献。我们一般将数据由文献输入到程序称之为读取,程序将数据输出到文献称之为写入。第15页10十月2023C++面向对象程序设计8.3.1fstream类fstream类能够用于将数据写入文献,或读取文献数据。要使用fstream类执行文献I/O时,首先必须先定义一种fstream类对象。例如:fstreamfile;//定义一种fstream对象利用fstream所提供open组员函数,打开一种文献。传入open函数参数有两个,一种传入欲打开磁盘文献名称,另一种传入打开该文献模式参数。file.open("MyFile.txt",ios::in);//在读取模式下打开MyFile.txt文献第16页10十月2023C++面向对象程序设计8.3.1fstream类表8-1文献流文献打开模式模式参数

能ios::in文献打开为读取(输入)状态,此为istream类默认模式参数ios::out文献打开为写入(输出)状态,此为ostream类默认模式参数ios::ate打开一种现存文献,从文献结尾处读取(输入)或写入(输出)ios::app打开一种输出文献从文献结尾写入(输出)数据ios::trunc打开一种文献,假如它已经存在,就删除其中原有内容ios::nocreate假如一种文献存在则打开它,不然该操作失败ios::noreplace假如一种文献不存在则作为新文献打开它;假如文献已存在,则该操作失败ios::binary以二进制模式打开一种文献,默认是文本模式第17页10十月2023C++面向对象程序设计8.3.1fstream类表8-2文献处理函数函

明open(filename,mode)以mode模式打开名为filename文献close()关闭文献is_open()检查文献是否为打开状态,是则返回真,不然返回假write(str,size)将str数组中size个字符写入到文献中read(str,size)从文献中读取数据至文献结尾,并设定给str数组,但至多不超出size个字符第18页10十月2023C++面向对象程序设计8.3.1fstream类C++文献I/O模式分为两种,一种为格式化文字模式,另一种为二进制模式,默认文献I/O模式为文字模式。当使用格式化文字模式时,输出至文献内容将被储存为字符,因此,格式化文字模式适合储存字符或字符串。假如以二进制方式处理数字,无论是储存方式,还是占有文献空间方式都与其储存在内存中方式相同,因此,在储存数字时使用二进制模式是比较合适。第19页10十月2023C++面向对象程序设计8.3.2格式化文字模式文献I/O文献最小单位为字符,由字符组成一种字段,好几个字段组成一种统计,而一种文献则由好几笔统计组成。将数据输入输出到文献中,除了能够使用write和read函数外,还能够使用“<<”和“>>”运算符,而所有在8.2.1节中提及格式控制办法,均能够在文献I/O中使用。第20页10十月2023C++面向对象程序设计8.3.3二进制模式文献I/O在二进制模式下,文献I/O将利用write和read函数将所有数据以字节形式储存至文献里。对于原本就是字符数据,并不需要转型,即可读取/写入到文献里;但对于数字型数据,则必须转为字符指针,然后传入write和read函数。第21页10十月2023C++面向对象程序设计8.3.4文献指针使用文献指针是文献读取/写入数据时插入或输出位置。文献指针有两种,一种是写入指针,另一种是读取指针。当文献被打开时,这两个指针都将被设定指向文献起始处。在ios类里,定义了三个特定文献指针。通过指针函数与特定指针配合使用,可供在处理文献I/O时移动文献指针之用。这三个位移指针分别是ios::beg(文献开头)、ios::end(文献结尾)、ios::cur(目前指针位置)。第22页10十月2023C++面向对象程序设计8.3.4文献指针使用表8-3文献指针函数文献指针函数

明seekg(pos,seek_dir)设定文献读取(输入)指针到距离文献某一特定指针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()返回目前文献写入指针位置第23页10十月2023C++面向对象程序设计项目设计7校园信息管理系统中数据存放1设计题目校园信息管理系统中数据存放2设计概要要求掌握面向对象程序设计办法,I/O流概念,以及如何利用文献存放对象。3系统分析4功能模块设计第24页10十月2023C++面向对象程序设计3系统分析目前校园信息管理系统已经能够完成人员信息输入、显示和分析等一系列工作,不过目前程序并不能将信息长期保存

温馨提示

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

评论

0/150

提交评论