Compartilhar via


Serialização de dados para e de arquivos

A ideia básica de persistência é que um objeto deve ser capaz de gravar seu estado atual, indicado pelos valores de suas variáveis membro, no armazenamento persistente. Mais tarde, ele pode ser recriado lendo ou "desserializando" seu estado no armazenamento persistente. Um ponto chave aqui é que o próprio objeto é responsável por ler e escrever seu próprio estado. Portanto, para que uma classe seja persistente, ela deve implementar as operações básicas de serialização.

A estrutura fornece uma implementação padrão para salvar documentos em arquivos de disco em resposta aos comandos Salvar e Salvar como no menu Arquivo e para carregar documentos de arquivos de disco em resposta ao comando Abrir. Com muito pouco trabalho, você pode implementar a capacidade de um documento de gravar e ler seus dados de e para um arquivo. A principal ação necessária é substituir a função de membro Serializar na classe do documento.

O assistente de aplicativo do MFC coloca uma substituição esquelética da CDocument função do membro Serialize na classe de documento criada para você. Depois de implementar as variáveis de membro do aplicativo, é possível preencher sua substituição Serialize com o código que envia os dados para um "objeto de arquivo" conectado a um arquivo. Um objeto CArchive é semelhante aos objetos de entrada/saída cin e cout da biblioteca iostream do C++. No entanto, CArchive grava e lê o formato binário, não o texto formatado.

O que você quer saber mais sobre

A função do documento na serialização

A estrutura responde automaticamente aos comandos "Abrir", "Salvar" e "Salvar como" do menu Arquivo chamando a função de membro Serialize do documento, caso ela esteja implementada. Um comando ID_FILE_OPEN, por exemplo, chama uma função de manipulador no objeto do aplicativo. Durante esse processo, o usuário vê e responde à caixa de diálogo Abrir Arquivo e a estrutura obtém o nome de arquivo escolhido pelo usuário. A estrutura cria um CArchive objeto configurado para carregar dados no documento e passa o arquivo para Serialize. A estrutura já abriu o arquivo. O código na função de membro Serialize do documento lê os dados por meio do arquivo, reconstruindo os objetos de dados conforme necessário. Para obter mais informações sobre serialização, consulte o artigo Serialização.

A função dos dados na serialização

Em geral, os dados de tipo de classe devem ser capazes de se serializar. Ou seja, quando você passa um objeto para um arquivo, o objeto deve saber como armazenar-se no arquivo e como ser lido do arquivo. O MFC fornece suporte para tornar as classes serializáveis dessa forma. Se você criar uma classe para definir um tipo de dados e pretende serializar dados desse tipo, projete para serialização.

Consulte também

Usar documentos