版权声明:本文章由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;
}
输入和输出案例:
用笔记本查看在磁盘中写入的数据