VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 3572|回复: 78

《实用C++》第44课 文件IO操作之读写

  [复制链接]
51_avatar_middle
online_admins 发表于 2018-6-7 23:43:39 | 显示全部楼层 |阅读模式
1、简介:
上节课给大家介绍了各种类型的文件流对象,对文件进行了打开与关闭的操作。那么打开与关闭不是目的,打开文件之后重要的是为了要进行文件的读写操作,不然打开、关闭文件干嘛?对不对?在C++文件流操作中,可以使用多种方法对文件进行读写操作,例如:<<、>>、put、get、getline、read、write 都是可以的。接下来就分别给大家讲解下每个函数怎么用!

2、文件的写操作:
写操作对应的有:<<、put、write 等,我们来看下他们分别都能实现什么样的写文件功能!
①、写文本类型/ASCII码类型的可见字符串:<<、put
示例代码如下:见附件!

大家看到了吧,这就是写文本文件的方式,其中 << 支持的类型比较多,put 只能写单个字符到文件,还是有一定局限性的,所以 put 平时用的比较少。
<< 支持的类型详见:http://www.cplusplus.com/referen ... eam/operator%3C%3C/

②、二进制类型写文件:write
并不一定所有的文件都是文本文件,也并不是所有的功能都要求用文本文件来实现。例如:图片文件就是二进制文件,我们用记事本打开之后发现里面是乱码,根本不是我们用眼睛能看懂的文本文件,所以类似这样的文件就不能用 << 或者 put 来写入了。那么用什么呢?可以用接下来要给大家讲解的 write 函数,他支持文本类型和二进制类型。你只要告诉他内存的地址,以及从这个地址开始要写多少字节的数据到文件就可以了,例如:见附件!

这里面大家可以看到 write 的第一个参数是 char* 类型的,但是不要误以为 write 只能写字符串类型的数据,完全错误!char * 不一定是字符串,里面放的东西可能是字符串,也可能是二进制数据。其实对于 write 来说第一个参数如果写成 void* 可能大家能更好理解一些。也就是一个地址而已,具体这个地址里面的内容是什么,write 不关心。第二个参数就是要一个长度,要从多长的一块内存数据写到文件中。大家明白了吗?

3、文件的读操作:
①、读文本类型/ASCII码类型的文件:>>、get、getline
代码见附件!
>>支持的类型详见:http://www.cplusplus.com/referen ... eam/operator%3E%3E/
istream::get 详见:http://www.cplusplus.com/reference/istream/istream/get/

还有一个 getline 函数,该函数是从文件中读取一行数据,什么是一行?所谓的一行就是有换行符 \n,或者达到 getline 的缓冲区大小,或者读到文件末尾。
istream::getline 详见:http://www.cplusplus.com/reference/istream/istream/getline/
所以,如果是想把文件中的内容一行一行的读进来,可以使用 getline 函数,还是非常方便的。
代码见附件!

②、读取二进制文件类型:read
代码见附件!

具体 read 函数的定义见:http://www.cplusplus.com/reference/istream/istream/read/
也就是说他从指定的文件中读取数据,读取的数据可以是文本类型的也可以是二进制类型的,其实read也不管你想要读取什么东西,我只管读就是了,把读取到的内容放在第一个参数指针指向的内存中,具体读取的字节数就是靠第二个参数指定。

4、小作业:
今天给大家讲解了如何进行文件的读写,介绍了相关的读写文件的函数,那么今天给大家留的小作业就是如何判断读写文件的操作/函数是否成功了呢?以及如何判断是否读到文件末尾了呢?希望大家课后自己实践下!


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

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




上一篇:《实用C++》第43课 文件IO操作之打开与关闭
下一篇:《实用C++》第45课 文件IO操作之文件指针
78_avatar_middle
在线会员 发表于 2018-6-8 08:52:00 | 显示全部楼层
又出新教程啦。。
98_avatar_middle
在线会员 发表于 2018-6-8 15:23:37 | 显示全部楼层
谢谢 提供 教程
继续
96_avatar_middle
在线会员 发表于 2018-6-8 16:55:36 | 显示全部楼层
先顶!~~~~
58_avatar_middle
在线会员 发表于 2018-6-8 17:47:37 | 显示全部楼层
辛苦了!连续更新好几个教程!
34_avatar_middle
在线会员 发表于 2018-6-9 17:03:54 | 显示全部楼层
感谢分享,讲得很棒
82_avatar_middle
在线会员 发表于 2018-6-12 07:38:53 | 显示全部楼层
前面的教程看了好多了
80_avatar_middle
在线会员 发表于 2018-6-12 08:49:30 | 显示全部楼层
坚持学习!
82_avatar_middle
在线会员 发表于 2018-6-12 11:42:25 | 显示全部楼层
感谢分享,
74_avatar_middle
在线会员 发表于 2018-6-12 12:57:36 | 显示全部楼层
看看        
95_avatar_middle
在线会员 发表于 2018-6-12 14:19:14 | 显示全部楼层
又出新教程啦。。
85_avatar_middle
在线会员 发表于 2018-6-12 16:54:04 | 显示全部楼层
感谢分享,学习一下。
80_avatar_middle
online_vip 发表于 2018-6-12 22:31:40 | 显示全部楼层

继续学习 谢谢提供      
63_avatar_middle
在线会员 发表于 2018-6-14 15:39:30 | 显示全部楼层
谢谢老师,真的很好
06_avatar_middle
online_vip 发表于 2018-6-14 20:54:23 | 显示全部楼层
我爱学习  学习爱我
44_avatar_middle
在线会员 发表于 2018-6-16 08:51:48 | 显示全部楼层
版主辛苦.感谢版主,
41_avatar_middle
online_vip 发表于 2018-6-16 14:36:16 | 显示全部楼层
感谢分享。
51_avatar_middle
online_vip 发表于 2018-6-16 17:35:57 | 显示全部楼层
多谢分享。
56_avatar_middle
在线会员 发表于 2018-6-20 20:05:46 | 显示全部楼层
谢谢楼主提供免费教程!
49_avatar_middle
在线会员 发表于 2018-6-21 21:26:10 | 显示全部楼层
gh go rhf rhf
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

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

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

GMT+8, 2019-3-19 19:07

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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