Работа с файлами прямого доступа в C ++

Я чрезвычайно новичок в C ++ (и вообще программировании) и работаю над проектом, который поставил меня в тупик (нетрудно это сделать, ха). Проект включает в себя файлы прямого доступа. Мы должны создать файл, состоящий из серии записей деталей. Вот некоторые характеристики:

Должен содержать запись заголовка (заполнено 24 байта) с указанием количества допустимых элементов.

Каждая запись данных (длиной 24 байта) будет содержать номер запаса (не более 4 цифр), описание (не более 8 символов), счетчик (не более 4 цифр) и индикатор «тестовой части» (не более 4 цифр => -1). - конец файла).

Этот файл первоначально будет содержать 20 пустых (фиктивных) записей и будет создан последовательно.

После того, как файл будет создан, будет доступен последовательный текстовый файл обновления на основе номеров запасов, и новые записи будут вставлены в файл.

После завершения обновления действительные записи деталей будут напечатаны в порядке, начиная с записи запаса «1».

Обновление путем чтения текстового файла обновления (prog4.dat) и поиска позиции файла на основе номера запаса (не забудьте запись заголовка)

Например:

Initial (empty)
Input (updates)
    1 widgits 25 3
    6 gidgits 12 8
    8 kidgits 6 -1
    3 didgits 11 6
Output
    1 widgits 25
    3 didgits 11
    6 gidgits 12
    8 kidgits 6

Я абсолютно ничего не знаю о файлах Direct Access, поэтому просматривал пару разных ссылок, которые я нашел в Google (http://cee-ux49.cee.illinois.edu/cee490/public_html/pdfs_vgs/aL23_Direct_Access_Files.pdf , а такжеhttp://www.learncpp.com/cpp-tutorial/137-random-file-io/ в частности), но я не могу понять, как заставить это работать для этой конкретной программы.

Я не слишком много сделал для кода, так как, как я уже сказал, это поставило меня в тупик, и то, что у меня есть, основано главным образом на этой первой ссылке, поэтому я не знаю, насколько это правильно (не знаю, какой размер дать вектор, так как я не совсем уверен, что это будет в моей конкретной проблеме (может быть, массив деталей?)), но вот то, что я смог придумать.

#include <iostream>
#include <string>
#include <fstream>
#include <stream>
using namespace std;

class records {
public:
        int getStckNumber() {
                return stockNumber;
        }
        void setStockNumber(int stockNum) {
                stockNumber = stockNum;
        }

        string getItemDespcription() {
                return itemDescription;
        }
        void setItemDespcription(string itemDescrip) {
                itemDescription = itemDescrip;
        }

        int getItemAmount() {
                return itemAmount;
        }
        void setItemAmount(int itemAmt) {
                 itemAmount = itemAmt;
        }

        int getNext() {
                return next;
        }
        void setNext(int nxt) {
                next = nxt;
        }
private:
        int stockNumber;
        string itemDescription;
        int itemAmount;
        int next;
        int recNum;
}


int main() {
        int stockNumber;
        string itemDescription;
        int itemAmount;
        int next;
        int recNum;
        int recSize = sizeof(int) + sizeof(string) + sizeof(int) + sizeof(int) + sizeof(int);

        istream updateFile;
        updateFile.open("prog4.dat");
        if(!updateFile) {
                cerr << "Open Failure" << endl;
                exit(1);
        }
}

Вот файл, который я буду использовать для обновлений:

10 zidgits 17 -1
14 lidgits 2 7
6 gidgits 12 8
1 bidgits 25 3
16 widgits 9 10
7 midgits 0 2
3 didgits 11 6
5 tidgits 5 16
2 pidgits 7 5
8 kidgits 6 14

Вот некоторые конкретные вопросы, которые у меня есть:

Как мне сохранить информацию из updateFile в переменных, которые будут записаны в выходной файл (еще не был создан)?

Как мне заставить его записывать данные в правильном порядке, поскольку они основаны на последнем числе в каждой строке в файле updateFile.

Например, выходной файл должен начинаться с наименьшего stockNumber, равного 1, поэтому, исходя из этого файла, элемент с stockNumber 1 - это ставки. Затем файл должен посмотреть на последнее число в этой строке (3) и записать информацию для элемента с этим stockNumber (didgits) и так далее.

Это основные вопросы, которые возникают у меня прямо сейчас, но я уверен, что больше будет всплывать по мере этого. Любая помощь будет с благодарностью. Кроме того, это должно произойти примерно через 5 часов, поэтому я стараюсь как можно ближе придерживаться кода, который у меня уже есть (я знаю, что гораздо больше будет добавлено, конечно), если это вообще возможно.

Ответы на вопрос(2)

Ваш ответ на вопрос