#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としましょう。2回のJohn Doeの出力が得られます
助けてください...私は完全な初心者です;(