1

Тема: Робота з файлами

Вітаю, стоїть завдання: Створити двійковий файл структур та впорядкувати файл по зростанню кодів виробів.

Не можу зрозуміти як створювати бінарні файли і не можу написати алгоритм, за яким у файлі коди виробів були би в порядку зростання :,(

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct base
{
    string name;
    string code;
    string price;
};
int main()
{
    int const MAX = 2;
    base b[MAX];
    for (int i = 0;i<MAX;++i)
    {
        cout << "Enter name :" << endl;
        cin >> b[i].name;
        cout << "Enter code :" << endl;
        cin >> b[i].code;
        cout << "Enter price :" << endl;
        cin >> b[i].price;
    }

    ofstream outfile;
    outfile.open("Out.txt");
    for (int i = 0;i<MAX;++i)
        outfile << b[i].name << " " << b[i].code << " " << b[i].price << endl;

    system("pause");
    return 0;
}

2 Востаннє редагувалося Betterthanyou (25.02.2017 17:26:10)

Re: Робота з файлами

Valsoray написав:

Не можу зрозуміти як створювати бінарні файли

Функція Open ще приймає другий параметр, цей параметр задає режим відкриття файлу,
наприклад, щоб відкрити в бінарному режимі файл потрібно написати

outfile.open("Out.txt", ios::binary);

Якщо цей тільки для "output", що можна зрозуміти з той назви яку ви задали(я про outfile), то додатково потрібно встановити режим ios::out

outfile.open("Out.txt", ios::binary | ios::out);

Для роботи з бінарним файлом використовуються методи write, read а також інші
читайте про ofstream і ifstream

Подякували: Valsoray1

3

Re: Робота з файлами

Створити двійковий файл

Тобто бінарний?
Тоді оператор << треба не використовувати.
Треба замінити string на char фіксованої довжини, та використовувати метод write http://www.cplusplus.com/reference/ostr … /?kw=write
Або зробити серіалізацію.