Я программирую настольную игру, и мне нужно создать двоичный файл с именем «write», который всегда записывает текущее игровое поле. Он содержит информацию, такую как активный игрок, самую большую и самую маленькую координаты x / y. Поля без токенов должны иметь значение ноль. Это должно быть сделано для того, чтобы программа могла быть автоматически протестирована автоматически.
Я думал о создании класса с именем CurrentField, который я пишу в своем двоичном файле после каждого хода, но я не уверен, каким образом я могу гарантировать, что все будет записано в том месте, где оно должно быть (мы должны объявить определенный заголовок и определенные вещи, как ожидается, будут в определенном смещении).
Есть идеи по этому поводу? Хорошая идея, или есть лучший способ сделать это?
Редактировать: И кто-нибудь знает способ проверки того, что действительно было записано в двоичный файл?
Edit2: это должно быть решено с помощью стандартных библиотек c ++.
Производительность не так важна, так как это не будет большой файл. Идея записи только при вводе команды хороша.
Есть по крайней мере две хорошие библиотеки, которые могут помочь вам в этом.
Повысить сериализацию предназначен для сериализации некоторых произвольных структур. Он включает в себя некоторые хорошие концепции, такие как управление версиями (вы можете изменить сохраненные данные в обновлении вашей игры и оставить прежнее игровое состояние без изменений) и archive
s (что, если вы хотите изменить формат файла вообще?
Повысить дух предназначен для анализа и сериализации с большой скоростью любых текстовых и двоичных протоколов. Это работает намного быстрее.
Вы можете обойти любые проблемы, просто сохраняя расположение памяти в файле с отображение файловой памяти. Будьте осторожны с указателями.
Проверьте, действительно ли вам нужно делать это на каждом шаге, так как вызовы файловой системы довольно медленные. По крайней мере, делайте это асинхронно (ищите Boost Asio).