- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第10讲 输入输出流 10.1 文件操作与文件流 10.2 字符串流* 参考教材的第13章后半部分 文件的概念。所谓“文件”指存储在外部介质上数据的集合。文件是外存的数据管理单位 文件类型 程序文件、数据文件 ASCII文件、二进制文件 10.1 文件操作与文件流 提问:如何选择二进制或ASCII文件? cin和cout能实现内存中的二进制数据和输入输出字符流之间的转换过程 文件IO流 标准输入流 标准输出流 CIN COUT ASCII文件 二进制文件 Ifstream Ofstream fstream 文件流类与文件流对象 文件流是以文件作为I/O对象的数据流,每一个文件流都有一个内存缓冲区与之对应 输出文件流:程序?文件数据流 输入文件流:文件?程序数据流 提问:文件流和文件是同一概念吗? C++定义3种文件类,用于对文件的I/O操作 (1) ifstream类,支持文件输入;例:ifstream infile; (2) ofstream类,支持文件输出;例:ifstream infile; (3) fstream类,支持文件输入输出 文件操作:打开、关闭、读写和指针定位等 打开文件:为文件流对象和指定的文件建立关联,以便使文件流流向指定的磁盘文件,并指定文件工作方式 打开文件方式有2种 (1) 调用文件流的成员函数open。一般形式: 文件流对象.open(文件名,输入输出方式); 例:ofstream outfile; outfile.open(“f1.dat”,ios::out); (2) 构建文件流对象时直接打开。文件流类在声明时,定义了带参数的构造函数,其中包含了打开磁盘文件的功能。因此在定义文件流对象时调用该构造函数来实现“三个功能” 例:ofstream outfile(“f1.dat”,ios::out); 说明 每一个打开的文件都有一个文件指针 可以用“位或”运算符“|”对输入输出方式进行组合 例:outfile.open(“f2.dat”,ios::app|ios::nocreate); 如果打开操作失败,open函数的返回值为0,如果是用调用构造函数的方式打开文件,则流对象的值为0 例:if(!outfile.open(“f2.dat”,ios::app)) {cout“open error”;exit(1);} 关闭文件操作 关闭文件用成员函数close。如outfile.close( ); 关闭是解除该磁盘文件与文件流的关联,原来设置的工作方式也失效,这样,就不能再通过文件流对该文件进行I/O 对ASCII文件 ASCII文件:文件每个字节中均以ASCII代码形式存储,即一个字节存放一个字符 程序可从ASCII文件中读出或写入若干个字符 ASCII文件的读写方法 用流插入运算符“”和流提取运算符“”输入或输出标准类型的数据到文件 用文件流的put(),get(),getline()等成员函数进行字符的读写 提问:为什么“”和 “”可以用于文件流对象的I/O? 例. 有一个整型数组,含10个元素,从键盘输入10个整数给数组,将此数组送到磁盘文件中存放。 例.从上例建立的数据文件f1.dat中读入10个整数放在数组中,找出并输出10个数中的最大者和它在数组中的序号 例.从键盘读入一行字符,把其中的字母字符依次存放在磁盘文件f2.dat中。再把它从磁盘文件读入程序,将其中的小写字母改为大写字母,再存入磁盘文件f3.dat。 二进制文件:内存中数据存储形式不加转换地传送到磁盘文件,又称为内存数据的映像文件或为字节文件。 打开时用ios::binary指定为以二进制形式。二进制文件除了可以作为输入文件或输出文件外,还可以是既能输入又能输出的文件。这是和ASCII文件不同的地方 成员函数read和write读写二进制文件 istream read(char *buffer,int len); ostream write(const char * buffer,int len); 字符指针buffer指向内存中一段存储空间。len是读写的字节数。调用的方式为a.write(p1,50);b.read(p2,30); 二进制文件的读写操作 例. 将一批数据以二进制形式存放在磁盘文件中 outfile.write((char*)stud[0],sizeof(stud)); 执行一次write函数即输出了结构体数组的全部数据 例. 将上例中以二进制形式存放在磁盘文件中的数据读入内存并在显示器上显示 文件指针操作 打开文件时分配一个文件指针,指明当前应进行读写位置 infile.seekg(100);
您可能关注的文档
- 丁茂超《系统解剖学》n5端脑.ppt
- 丁茂超《系统解剖学》016-脑神经.ppt
- 丁茂超《系统解剖学》感觉-前庭蜗器.ppt
- 丁茂超《系统解剖学》关节+肌总论.ppt
- 丁茂超《系统解剖学》感觉-视器.ppt
- 丁茂超《系统解剖学》呼吸.ppt
- 丁茂超《系统解剖学》静脉.ppt
- 丁茂超《系统解剖学》淋巴系统.ppt
- 丁茂超《系统解剖学》泌尿.ppt
- 丁茂超《系统解剖学》男性生殖.ppt
- 智能客服:自然语言处理在客服中的应用_(14).智能客服中的伦理与法律问题.docx
- 智能客服:语音识别与合成技术all.docx
- 智能客服:自然语言处理在客服中的应用_(9).意图识别与槽位填充.docx
- 智能客服:自然语言处理在客服中的应用_(12).智能推荐系统.docx
- 智能客服:知识图谱在客服中的应用_(4).知识图谱在智能客服中的应用.docx
- 智能客服:智能推荐系统_(16).推荐系统未来发展趋势.docx
- 智能客服:自然语言处理在客服中的应用_(8).语言生成模型.docx
- 智能客服:语音识别与合成技术_(1).语音信号处理基础.docx
- 智能客服:知识图谱在客服中的应用_(13).智能客服的性能评估与优化.docx
- 智能客服:知识图谱在客服中的应用_(15).智能客服的未来发展趋势.docx
文档评论(0)