#include<iostream> #include<fstream> #include<cstring> using namespace std; struct Student { int id; char name[20]; double score; }; void example2() { ofstream ofs2; ofs2.open("studentinfo.dat", ios::binary ); if (!ofs2.is_open()) {//属于bool函数类型 cout << "打开输入文件失败"; } Student students[3] = { {101,"Alice",90.5},{102,"Bob",85.0} {103,"Charlie",92.0} }; for (int i = 0; i < 3; i++) { ofs2.write((char*)&students[i], sizeof(Student)); } //reinterpret_cast<char*>students ofs2.close(); ifstream ifs2; ifs2.open("studentinfo.dat", ios::binary |ios::in); if (!ifs2.is_open()) { cout << "打开输出文件失败"; } for (int i = 0; i < 3; i++) { ifs2.read((char*)&students[i], sizeof(Student)); cout << students[i].id << ' ' << students[i].name << ' ' << students[i].score << endl; } //char buf[1024] = { 0 }; ////while (getline(ifs, buf)) //while (ifs >> buf) { // cout << buf ; // if (buf == "\n") cout << endl; //} //while (ifs.getline(buf, sizeof(buf))) {//要输入对象.getline(输入地址,输入长度) // cout << buf << endl;//读取时按行读取但不读取换行符 //} ifs.close(); }
时间: 2024-03-18 11:45:27 浏览: 77
使用include <iostream>时一定要加using namespace std
这段代码是一个使用二进制文件读写的例子,定义了一个结构体Student,包含学生的学号、姓名和成绩。在函数example2中,先用ofstream对象打开文件studentinfo.dat并以二进制方式写入三个Student对象,然后再用ifstream对象读取studentinfo.dat文件中的Student对象并输出学生的信息。其中,write()函数用于写入二进制数据,read()函数用于读取二进制数据。这种方式可以更高效地读写数据,但是不易于人类阅读。
阅读全文