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++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA