Как сохранить работу пользователя в одном файле C ++ - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь сохранить работу пользователя в C ++. Я мысли JSON и xml. Я искал ответ по всей сети, но ни один из них не помог. Я использую QT 5.9. Есть ли способ сохранить работу пользователя. Это может включать:

  • Название проекта.

  • Тип проекта.

  • и описание проекта.

РЕДАКТИРОВАТЬ:

Как бы я прочитал что-то простое, как это?

Name Test Project
Type Desktop App
Description A cool project

Я на linux.

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Один из лучших способов хранения структур данных использует CEREAL . Это быстро и откройте ваши руки в выборе многих методов хранения, таких как Binary JSON XML и ....

0 голосов
/ 11 апреля 2020

Ваш вопрос имеет техническое имя: персистентность , относящаяся к сериализация . Изучите библиотеку s11n .

Для этого вы можете использовать базы данных . В частности, реляционные базы данных (они поддерживаются Qt), такие как PostGreSQL ou sqlite . Или нет SQL баз данных, например mongodb или Cassandra или просто GDBM или TokyoCab inet.

Вы можете прочитать черновой отчет Бисмона , который может вас вдохновить. Это постоянная система данных ( Bismon - это программное обеспечение GPLv3 +, компоненты и идеи которого соответствуют вашим проблемам).

См. Также RefPerSys - ранняя работа в процессе в C ++ с Qt. Код GPLv3 и данные на gitlab . Также с постоянством на основе JSON.

Вы наверняка захотите использовать открытые форматы . Если вы определяете свой собственный формат данных (и не хотите использовать существующие форматы, такие как JSON, YAML , XML, H JSON, S-Expr , ASN1 , XDR , CSV , OpenDocument . ..) Обязательно документируйте свой формат данных . Для этой цели полезно использовать EBNF .

Если у вас нет тонны данных, вы можете предпочесть текстовые форматы. Их легче отлаживать. Если на диске возникает проблема, сожмите их (например, с помощью zlib ). Для обработки циклических ссылок и прямых ссылок вам необходимо проанализировать их дважды (за два прохода, как это делает ассемблер ).

Обратите внимание, что при трассировке методов сбора мусора используются методы и алгоритмы, относящиеся к постоянству: для сохранения ваших данных (например, вашей кучи ) используются алгоритмы, аналогичные тем, которые используются для копирования G C. Сложными проблемами являются циклические ссылки и интеллектуальные указатели , с которыми трудно справиться при подсчете ссылок .

Избегайте хранения указателей на диске или в базы данных напрямую, из-за ASLR .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...