- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
int main() { Student stu[3] = { // 定义Student结构体数组并初始化 {1210101, 张三, 618}, {1210102, 李四, 625}, {1210103, 王五, 612} }; int i, m; fstream outfile(studentinfo.dat, ios::binary|ios::out); // 以写方式打开二进制文件 if (!outfile.is_open()) // 判断文件打开操作是否成功 { cout以写方式打开二进制文件studentinfo.dat失败!endl; return 0; } for (i=0; i3; i++) // 将第i名学生的数据写入文件 outfile.write((char*)stu[i], sizeof(Student)); outfile.close(); // 关闭文件 9.4 文件的随机读/写 //以读写方式打开二进制文件 outfile.open(studentinfo.dat, ios::binary|ios::in|ios::out); if (!outfile.is_open()) // 判断文件打开操作是否成功 { cout以读写方式打开二进制文件studentinfo.dat失败!endl; return 0; } stu[1].score = 627; // 将文件指针定位到第2名学生数据开始的位置 outfile.seekp(1*sizeof(Student), ios::beg); // 用新数据覆盖原来文件中保存的第2名学生的数据 outfile.write((char*)stu[1], sizeof(Student)); outfile.close(); // 关闭文件 cout请输入待查询的学生序号(1~3):; 9.4 文件的随机读/写 cinm; if (m1 || m3) { cout学生不存在!endl; return 0; } // 以读方式打开二进制文件 fstream infile(studentinfo.dat, ios::binary|ios::in); if (!infile.is_open()) // 判断文件打开操作是否成功 { cout以读方式打开二进制文件studentinfo.dat失败!endl; return 0; } // 将文件指针定位到第m名学生数据开始的位置 infile.seekg((m-1)*sizeof(Student), ios::beg); // 将指定学生的数据读入到内存中 infile.read((char*)stu[m-1], sizeof(Student)); 9.4 文件的随机读/写 cout第m名学生的学号、姓名和成绩: stu[m-1].num,“ stu[m-1].name,stu[m-1].scoreendl; infile.close(); // 关闭文件 return 0; } 提示: 向文件写入数据时,会覆盖文件中相应位置的原有数据。要在文件中插入一条记录,需要先将插入位置后面的所有记录都向后移动一条记录的位置,再将新记录写入。插入新记录涉及大量记录的移动,是一个比较耗时的操作,因此,一般不在文件中做插入新记录的操作。 9.4 文件的随机读/写 C++输入/输出流类库中对提取运算符“”和插入运算符“”进行了多次重载(见9.3.1节),使它们能够实现多种内部类型数据的输入输出操作,输入流对象in和输出流对象out调用重载运算符函数实现数据的输入/输出, inx; 等价于 in.operator(x); outx; 等价于 out.operator(x); 但是“”和“”不能对用户自定义类型的数据直接进行输入/输出。要使这两个运算符能够支持自定义类型数据的输入/输出,必须由编程人员对它们进行重载。重载的函数形式为: istream operator(istream, 自定义类型); ostream operator(ostream, 自定义类型); 9.5 自定义数据类型的输入/输出 【例9-16】重载提取运算符“”和插入运算符“”,实现学生结构体变量的输入/输出操作。 参考程序如下: // studentinfo.cpp #includeiostream #includefstream using namespace std;
您可能关注的文档
- 第8章 牙周组织疾病及常见课件.ppt
- 2013首届北方药学研究生论坛-曾苏-ADME在药物研发中的作用--从成药性评价到新药转化研究课件.ppt
- 第8章 遗传与变异课件.ppt
- 2013糖尿病诊疗项目解读课件.ppt
- 第8章-1--农药残留分析课件.ppt
- 第09章 卤代烃课件.ppt
- 第09章-JAVA输入输出课件.ppt
- 2013心 悸(本)课件.ppt
- 2014高考第一轮复习【氧化还原反应】课件.ppt
- 2014高考化学一轮复习第二章 第三讲 氧化还原反应课件.ppt
- 高中版:校园植物养护与生态校园文化建设策略研究论文.docx
- 校内外教育衔接的资源配置优化论文.docx
- 高中校园咖啡馆对学生生活满意度及生活质量的调查研究论文.docx
- 高中英语学术词汇教学中的词汇教学与跨文化交际能力培养效果研究论文.docx
- 高中英语学科教学中教师角色转变与教学策略创新研究论文.docx
- 小学语文“跨媒介阅读”教学与多媒体教学资源开发与应用论文.docx
- 地图在初中地理教学中的个性化应用与效果研究论文.docx
- 初中语文课堂:涂鸦诗歌创作与文学素养培养研究论文.docx
- 小学校园垃圾分类校园环保社团运作模式研究论文.docx
- 职业生涯规划对高校升学率的影响研究论文.docx
原创力文档


文档评论(0)