19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
1

Сохранение структуры списка в бинарном виде в файл

07.10.2017, 13:01. Показов 1847. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте. Суть вопроса такова. Есть двусвязный список сделанный собственноручно без использования STL. Задача состоит в записи в файл в бинарном виде структуры списка.
список выглядит так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Node
{
     public:
              Node* next;
              Node* prev;
              Node* cut;
              string name;
}
class NodeRand
{
       public:
               Node* Head;
               Node* Last;
}
Я не понимаю какими способами сохранить зависимость элементов и структуру классов в файл, а тем более перевести содержимое указателей в бинарный вид, хотя скорей всего это не совсем надо. Может есть что то что можно почитать новичку по этому поводу. C# извращения тоже рассматриваю), только без класса Serialization.
Спс
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2017, 13:01
Ответы с готовыми решениями:

Открыть файл в бинарном виде
нужно считать данные из файла в бинарном виде. нельзя использовать библиотеку <fstream>, как это...

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

Как сохранить LPWSTR в файл в бинарном виде?
Как сохранить LPWSTR строку в файл в бинарном виде?

Как считать в бинарном виде файл из локальной сети
Дело в том, что ADODB.Stream может загружать файлы только с локальных дисков, причём с...

10
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 842
07.10.2017, 13:30 2
Цитата Сообщение от BaredJJ Посмотреть сообщение
хотя скорей всего это не совсем надо.
Так и есть. Твой код описывает машинное представление данных. Если выбросить Node* cut, то этиже данные можно представить и в каком-то другом формате. Например, так:
Javascript
1
["hello", "world", "foo", "bar"]
теперь это надо сохранить в бинарном виде, а значит надо придумать разделитель и/или способ указания длины строк и массива.
0
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
07.10.2017, 13:49  [ТС] 3
Цитата Сообщение от AlexVRud Посмотреть сообщение
Так и есть. Твой код описывает машинное представление данных. Если выбросить Node* cut, то этиже данные можно представить и в каком-то другом формате. Например, так:
JavascriptВыделить код
1
["hello", "world", "foo", "bar"]
теперь это надо сохранить в бинарном виде, а значит надо придумать разделитель и/или способ указания длины строк и массива.
Окей, а как понять структуру списка при чтении из файла, если будут сохранены только поля с данными и иерархию классов? Я думал нужно указать тип класса 1, затем тип класса 2 и сохранить длину каждого из членов и всего списка в целом.
Просто, что такое сериализация? Это же не просто сохранение данных, а так же последовательности данных и то к кому эти данные относятся. Или я не прав.
0
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 842
07.10.2017, 14:15 4
BaredJJ, всё правильно понимаешь, и задаёшь правильные вопросы. Пробуй. Вариантов много.
0
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 842
07.10.2017, 14:16 5
А код копируй сюда. Тогда будет больше дельных советов, и не только от меня.
0
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
07.10.2017, 14:24  [ТС] 6
Цитата Сообщение от AlexVRud Посмотреть сообщение
всё правильно понимаешь, и задаёшь правильные вопросы. Пробуй. Вариантов много.

Смешно. Я бы попробовал если бы понимал принцип этого. Я же не должен самостоятельно написать имя класса и его сохранить, а должен получить каким то образом метаданные, которые и должен записать и именно из них потом получить структуру класса. Какие вообще есть варианты? Каким образом из программы я могу получить метаданные о классе? Ткните уже меня носом наконец)
0
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 842
07.10.2017, 14:49 7
А где ты видишь метаданные тут:

Javascript
1
["hello", "world"]
Но этот тоже список.

А если его представить так:

Код
00 00 00 02 00 00 00 05 68 65 6c 6c 6f 00 00 00 05 77 6f 72 6c 64
или так

Код
68 65 6c 6c 6f 00 77 6f 72 6c 64 00 00
То эти данные также можно прочитать.
0
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
07.10.2017, 14:55  [ТС] 8
Понятно, что можно прочитать. Просто может я чего то не до конца понимаю!?
0
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 842
07.10.2017, 14:56 9
Хочешь универсальное?

Смотри на BSON
Сохранение структуры списка в бинарном виде в файл


или почитай http://leopard.in.ua/2013/10/1... on-formats
1
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
07.10.2017, 14:58  [ТС] 10
Спс. Сейчас займусь))) Вот это походе на правду.
0
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 842
07.10.2017, 15:04 11
Цитата Сообщение от BaredJJ Посмотреть сообщение
Просто может я чего то не до конца понимаю!?
Ты хочешь написать функции, которые будут сохранять/считывать данные через файл. Формат хранения определяется только этими функциями. А точнее тобой. Так что это и делай. В твоём случае всё просто. Сохранил последовательностей строк. И считываешь последовательность строк, почитав новую строку помещаешь её в список.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2017, 15:04
Помогаю со студенческими работами здесь

Сохранение структуры базы данных Access в виде SQL-скрипта
Здравствуйте! Подскажите, как "вытащить" из БД Access SQL-скрипт структуры имеющихся в ней таблиц...

Как записать объект(или хотя бы его поля ) в файл в бинарном виде и считать оттуда?
В txt файлик коллекцию обьектов записать необходимо, и считать потом оттуда.

Наполнение списка в виде структуры дерева
Добрый день. Ребят, помогите начинающему в изучение python. Пытаюсь создать данные в виде дерева:...

Как записать объект с полем типа std::string в бинарном виде в файл и считать его обратно?
Знаю как записывать объекты в файл в бинарном виде, но как быть, когда у них динамические поля?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru