我有写一个字符串与ofstream的 二进制文件但是,当我阅读fstream的 相同的二进制文件,它出现访问冲突读取位置误差 我看了一些文章,但我仍然可以“T设法解决我的错误C++访问冲突读取位置fstream的阅读
void activity::creAc(){
cout << "Activity ID : " << endl;
cin >> id;
cout << "Activity Title : " << endl;
cin >> title;
cout << "Activity Type : " << endl;
cin >> type;
cout << "Activity Date : " << endl;
cin >> acdate;
cout << "Activity Duration : " <<endl;
cin >> duration;
cout << "Activity Fees : " << endl;
cin >> fee;
}
void activity::showTask(){
cout << "Activity Title : " << title<<endl;
cout << "Activity Type : " << type << endl;
cout << "Activity Date : " << acdate << endl;
cout << "Activity Duration : " << duration << endl;
cout << "Activity Fees : " << fee << endl;
}
#include <iostream>
#include <string>
#include "user.h"
#include "Teacher.h"
#include "staff.h"
#include "activity.h"
#include <fstream>
#include <istream>
#include <ostream>
using namespace std;
void main(){
cout << "1.Create" << endl;
cout << "2.Read" << endl;
int choicenum;
cin >> choicenum;
switch (choicenum){
case 1: {
activity obj;
ofstream fp2;
fp2.open("activity.dat", ios::binary | ios::app);
obj.creAc();
fp2.write((char*)&obj, sizeof(obj));
fp2.close();
break;
}
case 2:
{
activity obj2;
ifstream fp1;
fp1.open("activity.dat", ios::binary);
while (fp1.read((char*)&obj2, sizeof(obj2))){
obj2.showTask();
}
fp1.close();
}
default: exit(0);
};
system("pause");
}
如果'activity'包含任何非平凡成员,如'std :: string',则不能使用二进制读取或写入。 –