VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 7727|回复: 71

《实用C++》第45课 文件IO操作之文件指针

  [复制链接]
51_avatar_middle
online_admins 发表于 2018-6-12 00:58:46 | 显示全部楼层 |阅读模式
1、文件读写的注意事项:
①、文件读写是否成功?
可以使用 good、bad、fail 来进行判断!
fail() 方法用于判断最后一次读取数据的时候是否遇到了类型不配的情况,若是返回true(如果遇到了EOF,该方法也返回true)
bad() 如果出现意外的问题,如文件受损或硬件故障,最后一次读取数据的时候发生了这样的问题,方法 bad() 将返回true。
good() 该方法在没有发生任何错误的时候返回true。该方法也指出的最后一次读取输入的操作是否成功。

②、读取文件的时候是否已经读到文件末尾?
可以使用 eof 来进行判断!eof() 方法用于判断最后一次读取数据的时候是否遇到EOF,即到达文件末尾,若是则返回true。
代码见附件!

2、文件指针:
这里面说的文件指针也可以理解为文件内部记录读取或者写入的当前位置,不然程序如何知道下一次该从文件的什么位置开始读取或者写入呢?
在读写文件的时候,每读取或者写入一个字节,磁盘中的文件指针就会向后移动一个字节。可以通过控制指针的位置,以便在我们需要的位置进行读写文件。

文件流提供以下成员函数来读取或配置文件指针:
tellg()      返回读取文件指针的当前位置
tellp()      返回写入文件指针的当前位置
seekg(指针偏移量)      将读取文件指针移到指定位置
seekg(指针偏移量,参照位置)      将读取文件指针移到指定位置
seekp(指针偏移量)      将写入文件指针移到指定位置
seekp(指针偏移量,参照位置)  将写入文件指针移到指定位置
这些成员函数名和参数,容易混淆,下面就简单解释一下:

备注:以上函数中的最后一个字母不是g就是p,代表什么意思呢?其中,g代表get,表示读取;p代表put,表示写入。
另外,函数参数中的“文件中的位置”和“指针偏移量”为 long整型,以字节为单位。“参照位置”是一个有以下值的枚举:
ios::beg      文件开头计算偏移量
ios::cur       文件当前位置计算偏移量
ios::end      文件结尾计算偏移量
其中,函数seekg(指针偏移量) 和 seekp(指针偏移量),默认从文件开头计算偏移量。
代码见附件!

3、使用文件指针获取文件大小:
原理:文件结尾的位置,就代表从文件开始的位置到结尾的字节数,即文件的大小!
代码见附件!

4、小作业:
通过文件读写的方式,自己实现一个函数,实现文件的拷贝功能。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
教程在线观看地址:
https://www.bilibili.com/video/av38388453/?p=47
MP4高清视频下载地址:链接:https://pan.baidu.com/s/1f9Snkw-YYg0b8SxjI1JlCw 提取码:tuzt
课件+源码下载(回复后可见):
游客,如果您要查看本帖隐藏内容请回复

备注:VIP会员可免费下载本站所有资源(点击查看)
提示:通过购买VC驿站U盘打包(点击查看)即可加入终身Vip会员^_^




上一篇:《实用C++》第44课 文件IO操作之读写
下一篇:《实用C++》第46课 C++容器之动态数组vector①
80_avatar_middle
在线会员 发表于 2018-6-12 08:50:07 | 显示全部楼层
坚持学习!
回复 支持 反对

使用道具 举报

82_avatar_middle
在线会员 发表于 2018-6-12 11:43:31 | 显示全部楼层
谢谢分享,继续学习
回复 支持 反对

使用道具 举报

74_avatar_middle
在线会员 发表于 2018-6-12 12:58:10 | 显示全部楼层
看看        
回复 支持 反对

使用道具 举报

95_avatar_middle
在线会员 发表于 2018-6-12 14:17:30 | 显示全部楼层
坚持学习!
回复 支持 反对

使用道具 举报

85_avatar_middle
在线会员 发表于 2018-6-12 16:54:26 | 显示全部楼层
感谢分享,学习一下。
回复 支持 反对

使用道具 举报

58_avatar_middle
在线会员 发表于 2018-6-12 20:27:26 | 显示全部楼层
辛苦大佬了!
回复 支持 反对

使用道具 举报

80_avatar_middle
online_vip 发表于 2018-6-12 22:32:11 | 显示全部楼层

继续学习 谢谢提供      
回复 支持 反对

使用道具 举报

78_avatar_middle
在线会员 发表于 2018-6-13 00:00:04 | 显示全部楼层
出得好快。谢谢
回复 支持 反对

使用道具 举报

98_avatar_middle
在线会员 发表于 2018-6-13 09:01:12 | 显示全部楼层
谢谢分享
继续学习
回复 支持 反对

使用道具 举报

82_avatar_middle
在线会员 发表于 2018-6-13 18:17:44 | 显示全部楼层
一直学习ing
回复 支持 反对

使用道具 举报

69_avatar_middle
在线会员 发表于 2018-6-14 07:59:58 | 显示全部楼层
期待MFC方面的有窗口的教程,感谢SYC
回复 支持 反对

使用道具 举报

22_avatar_middle
在线会员 发表于 2018-6-14 08:59:30 | 显示全部楼层
通过文件读写的方式,自己实现一个函数,实现文件的拷贝功能。
回复 支持 反对

使用道具 举报

63_avatar_middle
在线会员 发表于 2018-6-14 15:40:26 | 显示全部楼层
再接再进,好好学习
回复 支持 反对

使用道具 举报

44_avatar_middle
在线会员 发表于 2018-6-16 08:52:23 | 显示全部楼层
版主辛苦,感谢版主.
回复 支持 反对

使用道具 举报

41_avatar_middle
online_vip 发表于 2018-6-16 14:36:51 | 显示全部楼层
感谢分享。
回复 支持 反对

使用道具 举报

06_avatar_middle
online_vip 发表于 2018-6-19 21:22:41 | 显示全部楼层
我爱学习 学习爱我
回复 支持 反对

使用道具 举报

49_avatar_middle
在线会员 发表于 2018-6-21 21:24:45 | 显示全部楼层
rhf rhf rhf
回复 支持 反对

使用道具 举报

96_avatar_middle
在线会员 发表于 2018-6-22 18:34:36 | 显示全部楼层
坚持@@!~~~~~
回复 支持 反对

使用道具 举报

22_avatar_middle
在线会员 发表于 2018-6-22 22:04:02 | 显示全部楼层
谢谢分享,继续学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-1-17 22:14

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表