Работа с файлами в С++

Написал программу, но нужно реализовать работу с файлами. Информация, обрабатываемая программой, должна храниться в файле, результат работы занести в другой файл. Кроме это нужно реализовать корректировку записей внутри файла без полной перезаписи файла. Не получается это реализовать... Помогите пожалуйста Вот мой код:

#include <iostream>
#include <fstream>
 
using namespace std;
 
class Books
{
private:
    struct Book 
    {
        int ID;
        char Auth[40];
        char Name[50];
        int Year;
        char Publ[40];
        int Pages;
    };
 
    Book* base;   //указатель на динамический массив структур Book
    size_t  k;      //размер динамического массива
 
public: //все последующие члены будут открытыми
 
    //конструктор класса - создаёт массив
    Books(size_t k)
    {
        base = new Book[k];
        this->k = k;
    }
 
    //деструктор класса - удаляет массив
    ~Books()
    {
        delete[] base;
    }
 
    //далее следуют приобразованные из ваших функций методы класса (в терминологии С++ - функции-члены)
    void input_class(); //вместо void input_struct(Books* base, size_t k), параметры уже не нужны
    void print_class();
    void year_query();
};
 
 
/*Далее - превращаем функции в методы (реализация класса)*/
 
void Books::input_class() //не забываем Books:: перед именем
{
    //параметры base и k - теперь поля класса, так что тело не изменилось
    for (size_t i = 0; i < k; ++i)
    {
        cout << "Введите данные о книге [" << i + 1 << "] (ID, Auth, Name< Year, Publ, Pages): ";
        cin >> base[i].ID;
        cin >> base[i].Auth;
        cin >> base[i].Name;
        cin >> base[i].Year;
        cin >> base[i].Publ;
        cin >> base[i].Pages;
    }
    std::cout << std::endl;
}
 
//
void Books::print_class()
{
    std::cout << "Состояние полей структуры Books: \n";
    for (size_t i = 0; i < k; ++i)
    {
        cout << base[i].ID << '\t';
        cout << base[i].Auth << '\t';
        cout << base[i].Name << '\t';
        cout << base[i].Year << '\t';
        cout << base[i].Publ << '\t';
        cout << base[i].Pages << '\t';
        cout << std::endl;
    }
    cout << std::endl;
}
/*
 Аналогично делаем для остальных функций...
*/
 
void Books::year_query()
{
    int y;
    cout << "Введите год для выборки -> ";
    cin >> y;
    cout << std::endl;
    bool f = false;
    cout << "Name " << '\t' << "Auth " << std::endl;
    for (size_t i = 0; i < k; ++i)
        if (y < base[i].Year)
        {
            cout << base[i].Name << '\t' << base[i].Auth << endl;
            f = true;
        }
    if (!f)
        cout << "Книг после " << y << " года" << " нет" << endl;
}
 
int main()
{
    int m;
    setlocale(0, "");
    cout << "введите количество книг: "; cin >> m;
        
    Books* books = new Books(m);
    books->input_class();
    books->print_class();
    books->year_query();
    delete books;
 
    return 0;
}

помогите пожалуйста


Ответы (0 шт):