apl08.应用对象:流.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++面向对象的程序设计谭火彬第八讲 应用对象:流对象内容安排文件和流C++中流技术的实现利用流技术操作顺序文件随机存取文件标准输入/输出流流的错误处理内容安排文件和流C++中流技术的实现利用流技术操作顺序文件随机存取文件标准输入/输出流流的错误处理数据如何存储目前程序所使用数据都是存储在变量中变量存在内存中,是临时的,程序运行结束后即消失,不能长期保存也不能直接显示到屏幕上,或从键盘读入数据需要长期保存需要存储到外部设备中,如硬盘、光盘、 U盘、软盘、磁带等不管什么设备,对于计算机而言,就是0、1的数据序列为了方便这些数据的存储,引入文件(file)的概念来永久保存数据文件(file)文件(file)操作系统提供的对数据存储和组织的方式将相关的数据按照一定的格式存储在一起,并通过文件名进行访问(读和写)同时为了区分不同格式的文件,操作系统引入了扩展名来表达不同的文件类型file1.txt、file2.doc、file3.jpg、file4.exe不同格式的文件访问方式不同,一般需要通过专门的软件,这些软件按照文件的格式对文件中的数据进行解释文件的存储不同类型文件有不同的存储和访问策略文本、Word、图形、可执行文件…但计算机处理的所有数据最终都会被简化成0和1的序列txt文件:直接按照ASCII 码(或其它编码)将字符翻译成二进制代码jpg文件:首先存储图片的基本信息(文件头,包括图片大小、分辨率、压缩算法等),再存储具体的各像素的信息可执行文件:文件头+程序段+数据段……..在程序中访问文件流(序列化):文件是由0和1组成的序列位(b, bit):计算机所支持的最小数据项字节(B, Byte):由8位组成,一般用来表示一个字符单位,C++中的char类型访问(读取)文件的基本思路把文件看成是一个字节流从该字节流中读取若干个字节按照文件格式,解释所读取的字节流,翻译成所需要的内容…0011000100110010…示例:读取文件…0011000100110010…0x31 0x32文本文件:按照ASCII的方式解释这两个字节 0x31 - 字符 “1”, 0x32 - 字符“2”图形文件:可能表示图像的大小,总共16个字节构成一个短整数(short):0x3231(十进制12849,高位在后) 也可能表示的是具体的像素信息,采用24位色,一个像素占三个字节分别表示R、G、B值,而当前两个值分别代表R(0x31=49)和G(0x32=50)回顾:从C到C++的文件访问技术传统C的文件操作:stdio.h(cstdio)操作系统提供的底层接口:int类型的句柄表示文件,与之对应的open、close、write、read、lseek等函数,实现对文件的操作标准C提供的独立于操作系统的接口:FILE*结构,与之对应的fopen、fclose、fwrite、fread、fprintf、fscanf、fgets、fgetc、fputc、feof、fseek等一些列对该结构操作的函数,实现对文件的操作标准C++中引入流技术处理文件总结:C++文件操作核心技术1. 如何建立与指定文件关联的文件流,并从流中获取内容采用C++流技术,将文件与某一个流类关联从该流类中获取指定的字节序列2. 如何知道文件格式,并进行相应操作每种类型的文件都有相关的格式标准,按照其标准进行访问自定义的文件也需要有一定的格式,以便进行相应的读写操作格式不对,将可能带来很严重的后果示例:文本文件bug内容安排文件和流C++中流技术的实现利用流技术操作顺序文件随机存取文件标准输入/输出流流的错误处理C++中的流技术C++中,对数据的输入/输出是以字节流的形式实现的流实际上就是一个字节序列输入操作时,字节从输入设备(如键盘、磁盘、网络等)流向内存输出操作时,字节从内存流向输出设备(如显示器、磁盘、网络等)应用程序对字节序列做出各种数据解释,以ASCII字符、内部格式的原始数据、图形、图像、数字音频、视频或其它任何应用程序所需的信息字节流和双字节流早期C++中,以字节为流的最小单位英语字母、数字、特殊符号等都可以用一个字节来表示(ASCII码),在C++中表示为char类型,占一个字节空间单字节最多只能表示256(28)个字符,无法支持一些大字符集如:汉字的数量远大于256个,一个汉字字符无法通过单字节表示C++新引入一种占多个字节的字符类型,用于支持更大的字符集(如Unicode字符集)数据类型wchar_t,占多个字节的字符类型(两个或四个字节,取决于不同的编译器)C++的流技术也必须同时支持这两种类型题外话:关于字符编码ASCII编码1 Byte,上世纪60年代美国制定的一套字符编码,实现英文字符与二进制之间映射一共规定了128个字符编码,最高为均为0非A

文档评论(0)

119220 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档