little_greg Опубликовано 24 января, 2011 Жалоба Поделиться Опубликовано 24 января, 2011 помогите исправить ошибку, нужно чтобы каждая запись записывалась в конец файла, а у меня получается, что каждая записывается поверх предыдущей, как это исправить. #include <iostream>#include <fstream>#include <string>using namespace std;struct Person { char firstname[15]; char lastname[15]; char address[30]; size_t recordNum; size_t insuranceNum;};ostream& operator<<(ostream& os, const Person& p) { cout << p.firstname << endl << p.lastname << endl << p.address << endl << p.recordNum << endl << p.insuranceNum << endl;}class DataBase { public: size_t query(size_t ssn); Person retrieve(size_t rn); void add(const Person& p);};void DataBase::add(const Person& p) { ofstream fout("database.bin", ios::binary); fout.seekp(0, ios::end); fout.write(reinterpret_cast<const char*>(&p), sizeof(p));}int main() { DataBase db; Person np; for (int i = 0; i < 2; i++) { (cin >> np.firstname).get(); (cin >> np.lastname).get(); (cin.get(np.address, 30)).get(); (cin >> np.insuranceNum).get(); (cin >> np.recordNum).get(); db.add(np); } ifstream fin("database.bin", ios::binary); while (fin.read(reinterpret_cast<char*>(&np), sizeof(np))) cout << np << endl;} Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 27 января, 2011 Жалоба Поделиться Опубликовано 27 января, 2011 (изменено) ofstream fout("database.bin", ios::binary); fout.seekp(0, ios::end); замените на ofstream fout("database.bin", ios::binary | ios::app); Изменено 27 января, 2011 пользователем Darhazer Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
little_greg Опубликовано 8 февраля, 2011 Автор Жалоба Поделиться Опубликовано 8 февраля, 2011 спасибо Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.