Работа с файлами в С++
Написал программу, но нужно реализовать работу с файлами. Информация, обрабатываемая программой, должна храниться в файле, результат работы занести в другой файл. Кроме это нужно реализовать корректировку записей внутри файла без полной перезаписи файла. Не получается это реализовать... Помогите пожалуйста Вот мой код:
#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;
}
помогите пожалуйста