ign="justify">};
В якості вхідних аргументів конструктор приймає 2 значення. Покажчик на рядок з ім'ям потрібного файлу const char * name, який передається в коснcтруктор базового класу fstream. І цілочисельне значення int p, цей параметр дорівнює 0, якщо користувач хоче створити новий двійковий файл і в нього потрібно записати заголовок і початкові дані, значення приймає 1, якщо збирається скористатися готовим файлом, і все що потрібно зробити це зв'язати потік вводу-виводу з двійковим файлом.
Конструктор без параметрів: _file (): basic_fstream () {};
використовується тільки для можливості створення покажчика на об'єкт класу, без прив'язки до двійкового файлу, це може бути корисно, якщо свідомо не відоме ім'я файлу який буде використовуватися.
Далі, функція bin_file :: set_elem (char * _str);
На вхід приймає рядок (майбутній елемент списку). Встановлює значення полів класу для подальшого додавання в список, вказівником next привласнює значення 0, так як додавання відбувається в кінець списку і даний елемент повинен виявитися завершальним. p align="justify"> Мабуть найважливіший елемент класу bin_file, який і створює структуру такою яка вона є, метод: add_elem ();
Перше, що відбувається, це установка позиції для читання в файлі (7, ios :: beg); Вона встановлюється для читання довжини першого елемента списку (заголовок 3 байти + покажчик на наступний 4 байти = 7 байт ). Якщо після прочитання довжина першого елемента виявилася рівною 0, приходимо до висновку, що список порожній, і додавати потрібно перший елемент. (First_lng == 0) {//список порожній (3, ios :: beg) ;//перший ел-т ((char *) & next, 4) ;//файловий покажчик на слід елем
write ((char *) & length, 4) ;//довжина рядка (str, length) ;//рядок
}
В іншому випадку, у списку вже існують елементи. Тут додавання відбувається складніше, спочатку потрібно дістатися до останнього елемента списку. p align="justify"> Рухаємося за структурою і зчитуємо кожен елемент, поки не знаходимо з нульовим покажчиком. {((Char *) & _next, 4) ;//указ на слід ((char *) & _length, 4) ;//указ на след_pos = tellp () ;//тек позиція
if (_next == 0) {
/***************************************** *** /;
} (_next);
} while (1);
Опинившись у потрібному місці, перше, що відбувається - переміщення позиції читання файлу на Next останнього елемента. Змінюючи це значення з 0 на 4 +4 + Length від поточної позиції, що відповідає кінцю двійкового файлу. Потім переходимо в щойно встановлену позицію, і записуємо туди новий елемент списку. br/>В
На цьому додавання завершується.
Метод: show_list ();