Как корректно записать и считать информацию в файл?

Подскажите, как мне корректно записать и считать информацию в файл, зарание спасибо.

    #include<iostream>
    #include<string>
    #include<iomanip>
    #include<fstream>
    #include<Windows.h>
    using namespace std;
    struct country;
    struct bank;
    struct client;

    struct bank 
    {
        client* arr;
        unsigned int number_of_client = 0;
        string name;
        unsigned int annual_percentage;
    };

    struct country
    {
        string name;
        unsigned int number_of_banks = 0;
        bank* arr;
    };


    struct client
    {
        string name;
        unsigned int sum_contribution;
        string address;
    };

    void setCountry(int & number_of_country, country *& arr) {
        system("cls");
        string name;
        cout << "Введите название страны:";
        cin >> name;
        if (number_of_country == 0)
        {
            number_of_country++;
            arr = new country[1];
            arr[0].name = name;
        }
        else
        {
            number_of_country++;
            country* arr2 = new country[number_of_country];
            for (int i = 0; i < number_of_country - 1; i++)
            {
                arr2[i] = arr[i];
            }
            arr2[number_of_country - 1].name = name;
            delete[]arr;
            arr = arr2;
        }
    }

    bool setBank(const int number_of_country, country*& arr) {
        system("cls");
        if (number_of_country == 0)
        {
            cout << "Вы не можете добавить банк, так как у вас не задано ни одной страны!"<< endl;
            system("pause");
            cin.get();
            return 0;
        }
        for (int i = 0; i < number_of_country; i++)
        {
            cout << i + 1 << ")" << arr[i].name<<endl;
        }
        cout << "В какую страну вы хотите записать банк?\nВаш ответ:";
        unsigned int value;
        cin >> value;
        while (value > number_of_country)
        {
            cout << "Ошибка введите заново значение!\n Ваш ответ:";
            cin >> value;
        }
        system("cls");
        cout << "Введите название банка:";
        string bank_name;
        cin >> bank_name;
        unsigned int percent;
        cout << "Введите годовой процент банка:";
        cin >> percent;
        value--;
        if (arr[value].number_of_banks == 0)
        {
            arr[value].arr = new bank[1];
            ++ arr[value].number_of_banks;
            arr[value].arr[0].name = bank_name;
            arr[value].arr[0].annual_percentage = percent;
        }
        else
        {
            ++ arr[value].number_of_banks;
            bank* arr2 = new bank[arr[value].number_of_banks];
            for (int i = 0; i < arr[value].number_of_banks - 1; i++)
            {
                arr2[i].annual_percentage = arr[value].arr[i].annual_percentage;
                arr2[i].name = arr[value].arr[i].name;
                arr2[i].number_of_client = arr[value].arr[i].number_of_client;
                arr2[i].arr = arr[value].arr[i].arr;
            }
            arr2[arr[value].number_of_banks - 1].name = bank_name;
            arr2[arr[value].number_of_banks - 1].annual_percentage = percent;
            delete[]arr[value].arr;
            arr[value].arr = arr2;
        }
        return 1;
    }

    bool setClient(country*& arr,int number_of_country) {
        system("cls");
        if (number_of_country == 0)
        {
            cout << "Добавте хотя-бы одну страну!!!" << endl;
            system("pause");
            cin.get();
            return false;
        }
        for (int i = 0; i < number_of_country; i++)
        {
            cout << i + 1 << ")" << arr[i].name << endl;
        }
        cout << "Выберите страну\nВаш ответ:";
        unsigned int value;
        cin >> value;
        while (value > number_of_country)
        {
            cout << "Ошибка введите заново значение!\n Ваш ответ:";
            cin >> value;
        }
        system("cls");
        value--;
        if (arr[value].number_of_banks == 0)
        {
            cout << "Добавте хотя-бы один банк!!!" << endl;
            system("pause");
            cin.get();
            return false;
        }
        for (int i = 0; i < arr[value].number_of_banks; i++)
        {
            cout << i + 1 << ")" << arr[value].arr[i].name<<endl;
        }
        cout << "В какой банк вы хотите записать клиента?\nВаш ответ:";
        unsigned int value2;
        cin >> value2;
        while (value2 > arr[value].number_of_banks)
        {
            cout << "Ошибка введите заново значение!\n Ваш ответ:";
            cin >> value2;
        }
        value2--;
        if (arr[value].arr[value2].number_of_client == 0)
        {
            system("cls");
            ++ arr[value].arr[value2].number_of_client;
            arr[value].arr[value2].arr = new client[1];
            cout << "Введите Ф.И.О. клиента\nВаш ответ:";
            string name;
            cin.ignore();
            getline(cin,name);
            arr[value].arr[value2].arr[0].name = name;
            cout << "Введите сумму вклада\nВаш ответ:";
            unsigned int sum_contribution;
            cin.ignore();
            cin >> sum_contribution;
            arr[value].arr[value2].arr[0].sum_contribution = sum_contribution;
            cout << "Введите адрес клиента\nВаш ответ:";
            string address;
            cin.ignore();
            getline(cin,address);
            arr[value].arr[value2].arr[0].address = address;
        }
        else
        {
            system("cls");
            arr[value].arr[value2].number_of_client ++;
            client * arr2 = new client[arr[value].arr[value2].number_of_client];
            for (int i = 0; i < arr[value].arr[value2].number_of_client - 1; i++)
            {
                arr2[i].address = arr[value].arr[value2].arr[i].address;
                arr2[i].name = arr[value].arr[value2].arr[i].name;
                arr2[i].sum_contribution = arr[value].arr[value2].arr[i].sum_contribution;
            }
            cout << "Введите Ф.И.О. клиента\nВаш ответ:";
            string name;
            cin.ignore();
            getline(cin, name);
            arr2[arr[value].arr[value2].number_of_client - 1].name = name;
            cout << "Введите сумму вклада\nВаш ответ:";
            unsigned int sum_contribution;
            cin >> sum_contribution;
            arr2[arr[value].arr[value2].number_of_client - 1].sum_contribution = sum_contribution;
            cout << "Введите адрес клиента\nВаш ответ:";
            string address;
            cin.ignore();
            getline(cin, address);
            arr2[arr[value].arr[value2].number_of_client - 1].address = address;
            delete[] arr[value].arr[value2].arr;
            arr[value].arr[value2].arr = arr2;
        }
        return true;
    }

    int banksInTheCountry(country*& arr, int number_of_country) {
        if (number_of_country == 0)
        {
            cout << "Добавте хотя-бы одну страну!!!"<<endl;
            system("pause");
            cin.get();
            return 0;
        }
        for (int i = 0; i < number_of_country; i++)
        {
            cout << i + 1 << ")" << arr[i].name << endl;
        }
        cout << "Выберите страну\nВаш ответ:";
        unsigned int value;
        cin >> value;
        while (value > number_of_country)
        {
            cout << "Ошибка введите заново значение!\n Ваш ответ:";
            cin >> value;
        }
        system("cls");
        value -= 1;
        cout << "В стране " << arr[value].name << " " << arr[value].number_of_banks << " банков";
        return arr[value].number_of_banks;
    }

    bool key(country*& arr,const int number_of_country) {
        system("cls");
        cout << "Введите название банка\n Ваш ответ:";
        string bank_name;
        cin >> bank_name;
        bool a = false;
        for (int i = 0; i < number_of_country; i++)
        {
            for (int j = 0; j < arr[i].number_of_banks; j++)
            {
                if (arr[i].arr[j].name == bank_name) {
                    cout << "В стрене " << arr[i].name << " есть ваш банк" << endl;
                    a = true;
                }
            }
        }
        system("pause");
        cin.get();
        if (!a)
        {
            cout << "Вашего банка нету ни в одной стране!"<<endl;
            system("pause");
            cin.get();
            return false;
        }
        return true;
    }

    void keepFile(fstream& file,country*& arr,int number_of_country) {
        file.close();
        file.open("information.txt", ios::out | ios::in);


        for (int i = 0; i < number_of_country; i++)
        {
            file.write((char*)&arr[i], sizeof(arr[i]));
            /*for (int j = 0; j < arr[i].number_of_banks; j++)
            {
                file.write((char*)&arr[i].arr[j], sizeof(bank));
                for (int n = 0; n < arr[i].arr[j].number_of_client; n++)
                {
                    file.write((char*)&arr[i].arr[j].arr[n], sizeof(client));
                }
            }*/
        }
    }

    void giveInformation(fstream& file, country*& arr, int number_of_country) {
        for (int i = 0; i < number_of_country; i++) {
            country buffer;
            file.read((char*)&buffer, sizeof(arr[i]));
            cout << "Страна " << buffer.name << endl << "количество банков в стране" << buffer.number_of_banks << endl;
        }


        /*for (int i = 0; i < number_of_country; i++)
        {
            country buffer;
            file.read((char*)&buffer, sizeof(country));
            cout << "Страна " << buffer.name << endl << "количество банков в стране" << buffer.number_of_banks << endl;
            for (int j = 0; j < arr[i].number_of_banks; j++)
            {
                bank buffer1;
                file.read((char*)&buffer1, sizeof(bank));
                cout << "Банк№" << j + 1 << " " << buffer1.name <<" процент годових "<< buffer1.annual_percentage << "\nКоличество клиентов в банке " << buffer1.number_of_client << endl;
                for (int n = 0; n < arr[i].arr[j].number_of_client; n++)
                {
                    client buffer2;
                    file.read((char*)&buffer2, sizeof(client));
                    cout << "Клиент№" << n + 1 << "\nИмя " << buffer2.name << "\nАдрес " << buffer2.address << "\n Сумма вложения " << buffer2.sum_contribution << endl;
                }
            }
        }*/

    }


    int main()
    {
        setlocale(0,"rus");
        country* arr;
        int number_of_country = 0;
        int value;
        bool b = true;

        fstream information;
        information.open("information.txt",fstream::app);
        if (!information.is_open())
        {
            cout << "Ошибка откритие файла!!!";
            return 1;
        }


        while (b)
        {
            system("cls");
            cout << "1)добавить страну\n2)добавить банк\n3)добавить клиента\n4)поиск информации по названию банка\n5)определить количество банков в конкретной государству\n6)Записать в файл\n7)Вся информация\n8)завершить программу\nВаш выбор:";
            cin >> value;
            switch (value)
            {
                case 1:
                {
                    setCountry(number_of_country, arr);
                    break;
                }
                case 2:
                {
                    setBank(number_of_country, arr);
                    break;
                }
                case 3:
                {
                    setClient(arr, number_of_country);
                    break;
                }
                case 4:
                {
                    key(arr, number_of_country);
                    break;
                }
                case 5:
                {
                    banksInTheCountry(arr, number_of_country);
                    break;
                }
                case 6:
                {
                    keepFile(information, arr, number_of_country);
                    break;
                }
                case 7:
                {
                    giveInformation(information, arr, number_of_country);
                    break;
                }
                case 8:
                {
                    b = false;
                    break;
                }


            }

        }


        information.close();
        return 0;
    }


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