Como criar um formato de arquivo para salvar jogos em c ++ usando STL

7

Ei, então eu acabei de aprender sobre a parte de E / S do STL, mais especificamente do fluxo. Embora agora eu possa salvar informações binárias e classes que fiz no disco rígido, não sei como definir como as informações devem ser lidas.

Eu vi a resposta para criar um formato de arquivo a partir deste [1] [1] post:

Normalmente, você definiria muitos registros / estruturas, como BITMAPINFOHEADER, e especificaria em que ordem eles devem vir, como devem ser aninhados, e pode ser necessário escrever muitas indicações e tabelas de consulta. Esses arquivos consistem em vários registros (talvez aninhados), tabelas de pesquisa, palavras mágicas (indicando início da estrutura, fim das estruturas etc.) e seqüências de caracteres em um formato definido de forma personalizada.

O que eu quero saber especificamente é como fazer isso com o STL e C ++ ... Como o formato é destinado apenas ao uso de um jogo, eu acho que seria muito mais fácil. O formato deve:

  • Seja passável (eu posso olhar através dele e encontrar o início da estrutura e talvez verificar o nome
  • Ser capaz de armazenar várias classes e dados em um único arquivo
  • possui iniciações e terminações identificáveis ​​em seções: como o espaço em arquivos de texto
  • Talvez tenha seu próprio ícone para representá-lo?

Como faço isso em c ++?

Griffin
fonte
4
Também acho que perguntar como fazer o formato do arquivo é um pouco errado. O formato do arquivo é o que você escreve no disco. E se você souber como o gravou em disco, provavelmente poderá descobrir como lê-lo novamente. O motivo para você definir o formato do arquivo é para que pessoas sem o seu código possam ler o arquivo, mas você provavelmente não precisará fazer isso.
Tetrad

Respostas:

9

tente usar o boost serialize ! Fora isso, o que você está pedindo é como implementar a serialização e isso é uma coisa realmente complicada! Eu recentemente implementei uma implementação para serialização e não é fácil falar sobre isso.

também há outra maneira de salvar apenas uma classe em um arquivo que contém todas as informações necessárias, o que simplifica muito o processo de salvar / carregar classes.

a propósito, o ícone não tem nada a ver com o formato do arquivo, é algo que o sistema operacional gera por arquivo, e geralmente os ícones são armazenados em algum lugar entre os arquivos do sistema operacional. exceto arquivos executáveis ​​do Windows (tanto quanto eu sei). Os arquivos executáveis ​​do Windows são como uma pasta compactada, contendo as operações binárias reais, dados de ícones para várias resoluções e talvez outros dados relacionados ao próprio sistema operacional.

Ali1S232
fonte
-1, o que ele procura não é estritamente serialização. +1 para mencionar ícones está relacionado ao sistema operacional.
Deceleratedcaviar
@danien: pelo que sei da sua pergunta, ele está procurando uma maneira de despejar todas as suas classes e carregá-las exatamente no mesmo estado após a reinicialização do programa. isso é serialização! observe que ele deseja manter várias classes e dados em um único arquivo .
11231 Ali1S232
2
Parece-me realmente uma questão de "programação básica": saber como converter (ou serializar se você desejar) dados em diferentes formatos ou estruturas antes de gravá-los em um arquivo ou outro tipo de fluxo. Os pedaços podem ser usados ​​para adicionar hierarquia, exceto que é apenas uma questão de experimentação, eu acho. Nenhuma resposta certa para isso.
Njdw 23/07