【发布时间】:2013-03-02 16:50:13
【问题描述】:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class PERSON{
string name, surname;
public:
void set_name(string aname, string asurname){
name = aname;
surname = asurname;
};
void read(){
}
void output(){
cout << name << " " << surname << "\n";
}
void save(PERSON *x){
ofstream file("test.bin", ios::out | ios::app | ios::binary);
if(!file.is_open()){
cout << "ERROR\n";
}else{
file.write((char*)x, sizeof(*x));
file.close();
}
}
};
/*
*
*
*
*/
int main(int argc, char** argv) {
PERSON * person1 = new PERSON;
PERSON * person2 = new PERSON;
person1->set_name("Amon", "Raa");
person1->save(oseba1);
ifstream file2("test.bin", ios::in | ios::binary);
if(!file2.is_open()){
cout << "Error\n";
return 0;
}
while(!file2.eof()){
file2.read((char *)person2, sizeof(*person2));
person2->output();
}
file2.close();
return 0;
}
这是我的代码...我做错了什么? 我想要做的是每次将一个类保存到二进制文件的末尾,然后读取所有条目...
但每次我运行程序时,我只打印最后输入的名称
所以第一次运行它 文件写入正确,输出正常 然后我将名称更改为其他名称,比如说 John Doe,我得到 2times John Doe 的输出
请帮助...我是一个完整的初学者;(
【问题讨论】:
-
你要找的东西叫做序列化。
-
我知道,我阅读了有关序列化的信息,然后将其写入普通的 ASCII 文件中......但我在学校需要这个,我真的不知道我在这里做错了什么:(
-
考虑提供更有意义的标题