C++ 磁盘存储对象

来源:百度知道 编辑:UC知道 时间:2024/06/18 22:17:11
我设计了一个类Student,并创建对象student,我想把它存入磁盘文件,但是存进去再读出来是乱码(一个巨大的负整数) 请问怎么解决。或者是应该用别的方法存储对象?

#include<iostream>
#include<string>
#include<list>
#include<fstream>
using namespace std;

class Student;
ostream& operator<<(ostream& out,Student& obj);

class Student
{
public:
string name;
int age;
int score;
Student(){}
Student(string n,int a,int s)
{
name=n;
age=a;
score=s;
}
friend ostream& operator<<(ostream& out,Student& obj);
};

ostream& operator<<(ostream& out,Student& obj) {
out<<obj.name<<" "<<obj.age<<" "<<obj.score<<endl;
return out;
}

void main()
{
list<Student> s;
list<Student>::iterator i;
ofstream output;

string name;
int age,s

output.write((char*)&student,sizeof(student));//将Student类对象student存入文件
改成
output<<student.name<<" "<<student.age<<" "<<student.score<<endl;

说句题外话,由于通常设计的时候name age score是私有的,可以在类里面设计一个函数,
string GetInfo()把信息以字符串的形式传出来
那么这句就改成
output<<student.GetInfo<<endl;好看,也好维护。个人建议,仅供参考。

写个命名空间,编译成dll保存