C++结构体数组的文件读写

版权声明:本文章由BlackCarDriver原创,欢迎评论和转载 https://blog.csdn.net/BlackCarDriver/article/details/88869092

程序设计中常常需要用到文件读写的功能,需要将程序产生的数据保存到磁盘,下次打开程序时读取这些数据,恢复上次退出程序时的状态。由于数据的数量不确定,常常使用vector等容器来存储数据,保存到文件时可以使用一下方法:

My Code:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<fstream>
using namespace  std;
//存储路径,绝对路径,注意使用两个斜杠
const char* path = "D://write_struct_demo.bin";

struct Node{
	int index;
	char str[30];
};
//将一个结构数组保存到二进制文件
void write_struct(vector<Node> vec){
	ofstream writer(path, ios::binary);
	int t = vec.size();
	writer.write((char*)&t, sizeof(int));
	for (int i = 0; i < vec.size(); i++){
		Node temp = vec[i];
		writer.write((char*)&temp, sizeof(Node));
	}
}
//从二进制文件中读取结构体到数组容器中
void read_struct(){
	vector<Node> vec;
	ifstream reader(path, ios::binary);
	int t;
	reader.read((char*)&t, sizeof(int));
	for (int i = 0; i < t; i++){
		Node temp;
		reader.read((char*)&temp, sizeof(Node));
		vec.push_back(temp);
	}
	//测试是否成功
	cout << vec.size() << endl;
	for (int i = 0; i < vec.size(); i++){
		cout << vec[i].index << "    " << vec[i].str << endl;
	}
	return;
}

int main(){
	vector<Node>vec;
	int n;
	cin >> n;
	for (int i = 0; i < n; i++){
		Node temp;
		cin >> temp.index >> temp.str;
		vec.push_back(temp);
	}
	write_struct(vec);
	cout << "------------------------" << endl;
	read_struct();
	return 0;
}

输入和输出案例:
在这里插入图片描述
用笔记本查看在磁盘中写入的数据
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BlackCarDriver/article/details/88869092