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

相关文章

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

C++ Primer 标准库vector示例详解

《C++Primer标准库vector示例详解》该文章主要介绍了C++标准库中的vector类型,包括其定义、初始化、成员函数以及常见操作,文章详细解释了如何使用vector来存储和操作对象集合,... 目录3.3标准库Vector定义和初始化vector对象通列表初始化vector对象创建指定数量的元素值

Golang基于内存的键值存储缓存库go-cache

《Golang基于内存的键值存储缓存库go-cache》go-cache是一个内存中的key:valuestore/cache库,适用于单机应用程序,本文主要介绍了Golang基于内存的键值存储缓存库... 目录文档安装方法示例1示例2使用注意点优点缺点go-cache 和 Redis 缓存对比1)功能特性

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

golang获取prometheus数据(prometheus/client_golang包)

《golang获取prometheus数据(prometheus/client_golang包)》本文主要介绍了使用Go语言的prometheus/client_golang包来获取Prometheu... 目录1. 创建链接1.1 语法1.2 完整示例2. 简单查询2.1 语法2.2 完整示例3. 范围值

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值