C++ //例13.14 将一批数据以二进制形式存放在磁盘文件中。例13.15 将刚才以二进制形式存放在磁盘文件中的数据读入内存并在显示器上显示。

本文主要是介绍C++ //例13.14 将一批数据以二进制形式存放在磁盘文件中。例13.15 将刚才以二进制形式存放在磁盘文件中的数据读入内存并在显示器上显示。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C++程序设计 (第三版) 谭浩强 例13.14 例13.15

例13.14 将一批数据以二进制形式存放在磁盘文件中。

例13.15 将刚才以二进制形式存放在磁盘文件中的数据读入内存并在显示器上显示。

IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。

 

代码块:
说明:文件f1.txt,f2.txt都在程序源文件同目录下。
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;const int N = 3;typedef struct Student{int num;string name;int age;char gender;
}Student;void initialStu(Student **stu, int n){*stu = new Student[n];
}void inputStu(Student *stu, int n){cout<<"Enter "<<n<<" Student Info:"<<endl;for(int i = 0; i < n; i++){cout<<"Enter No."<<i + 1<<" Student Number(100 ~ 999): ";cin>>stu[i].num;while(stu[i].num < 100 || stu[i].num > 999){cout<<"Number Error! Retry!\nEnter No."<<i + 1<<" Student Number(100 ~ 999): ";cin>>stu[i].num;}fflush(stdin);cout<<"Enter No."<<i + 1<<" Student Name: ";getline(cin, stu[i].name);cout<<"Enter No."<<i + 1<<" Student Age(18 ~ 30): ";cin>>stu[i].age;while(stu[i].age < 18 || stu[i].age > 30){cout<<"Age Error! Retry!\nEnter No."<<i + 1<<" Student Age(18 ~ 30): ";cin>>stu[i].age;}cout<<"Enter No."<<i + 1<<" Student Gender(M or F): ";cin>>stu[i].gender;while(stu[i].gender != 'M' && stu[i].gender != 'F'){cout<<"Gender Error! Retry!\nEnter No."<<i + 1<<" Student Gender(M or F): ";cin>>stu[i].gender;}cout<<endl;}cout<<endl;
}void freeStu(Student **stu){delete []*stu;
}void inputFile(char *name, Student *stu, int n){ofstream outfile(name, ios::binary);if(!outfile){cerr<<"Open File "<<name<<" Error!"<<endl;system("pause");exit(0);}for(int i = 0; i < n; i++){outfile.write((char*)&stu[i], sizeof(Student));}outfile.close();
}void outputFile(char *name, Student *stu, int n){ifstream infile(name, ios::binary);if(!infile){cerr<<"Open File "<<name<<" Error!"<<endl;system("pause");exit(0);}for(int i = 0; i < n; i++){infile.read((char*)&stu[i], sizeof(Student));}infile.close();cout<<"Student Info:"<<endl;for(int i = 0; i < n; i++){cout<<setiosflags(ios::left);cout<<"Number: "<<setw(3)<<stu[i].num<<" Name: "<<setw(10)<<stu[i].name<<" Age: "<<setw(2)<<stu[i].age<<" Gender: "<<setw(1)<<stu[i].gender<<endl;}cout<<endl;
}int main(){Student *stu = NULL;initialStu(&stu, N);inputStu(stu, N);inputFile("f1.txt", stu, N);outputFile("f1.txt", stu, N);freeStu(&stu);system("pause");return 0;
}
结果显示如下:

在这里插入图片描述

这篇关于C++ //例13.14 将一批数据以二进制形式存放在磁盘文件中。例13.15 将刚才以二进制形式存放在磁盘文件中的数据读入内存并在显示器上显示。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546043

相关文章

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

java内存泄漏排查过程及解决

《java内存泄漏排查过程及解决》公司某服务内存持续增长,疑似内存泄漏,未触发OOM,排查方法包括检查JVM配置、分析GC执行状态、导出堆内存快照并用IDEAProfiler工具定位大对象及代码... 目录内存泄漏内存问题排查1.查看JVM内存配置2.分析gc是否正常执行3.导出 dump 各种工具分析4.

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)