学生(数据:姓名、学号、班级;操作:自定); 一个班级有n个学生,(1)用二进制文件方式将n个学生的数据写入文件"student.dat";(2)从二进制文件"student.dat"中,将学生信息一个一个地读出,并在显示器上显示。
时间: 2023-11-22 18:55:20 浏览: 93
下面是示例代码,实现了学生类的定义、二进制文件的写入和读取:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Student {
public:
string name;
string id;
string cls;
void print() {
cout << "Name: " << name << ", ID: " << id << ", Class: " << cls << endl;
}
};
int main() {
int n = 3; // 假设有3个学生
// 创建学生数组
Student students[n];
students[0] = {"Tom", "1001", "Class 1"};
students[1] = {"Jerry", "1002", "Class 2"};
students[2] = {"Mike", "1003", "Class 3"};
// 将学生信息写入二进制文件
ofstream fout("student.dat", ios::binary);
fout.write((char*)students, sizeof(Student) * n);
fout.close();
// 从二进制文件中读出学生信息并显示
ifstream fin("student.dat", ios::binary);
Student s;
while (fin.read((char*)&s, sizeof(Student))) {
s.print();
}
fin.close();
return 0;
}
```
其中,`Student` 类定义了学生的数据结构,包括姓名、学号和班级。`print()` 方法用于将学生信息输出到屏幕上。
在 `main()` 函数中,我们创建了一个包含3个学生的数组,并将它们写入了名为 `student.dat` 的二进制文件中。接着,我们使用 `ifstream` 从二进制文件中逐个读取学生信息,并使用 `print()` 方法将其输出到屏幕上。
需要注意的是,在读写二进制文件时,需要使用 `ios::binary` 模式打开文件,并将结构体或类的指针强制转换为 `char*`,以便进行字节级别的读写。
阅读全文