
Prof. Paulo Rettore
Universidade Federal de Lavras
GAC124 — Introdução aos Algoritmos
Variáveis existem enquanto o programa está em execução. Arquivos permitem guardar dados de forma persistente.
Ler dados já existentes.
Gravar dados para uso futuro.
Os dados permanecem após fechar o programa.
| Tipo | Característica | Exemplo |
|---|---|---|
| Texto | Legível por pessoas. | notas.txt |
| Binário | Grava bytes diretamente. | dados.dat |
| Tipado | Registros de um tipo conhecido. | Aluno em arquivo binário. |
Arquivos binários são adequados quando o programa grava e lê estruturas com formato definido.
#include <fstream>
ifstream entrada("alunos.dat", ios::binary);
if (!entrada) {
cout << "Não foi possível abrir";
}Sempre verifique se o arquivo foi aberto antes de tentar ler ou gravar dados.
struct Aluno {
int matricula;
double media;
};
Aluno a = {20260001, 82.5};
ofstream saida("alunos.dat", ios::binary);
saida.write(reinterpret_cast<char*>(&a), sizeof(Aluno));Para gravação binária direta, use estruturas simples. Campos como string exigem uma estratégia própria de serialização.
Aluno a;
ifstream entrada("alunos.dat", ios::binary);
entrada.read(reinterpret_cast<char*>(&a), sizeof(Aluno));
if (entrada) {
cout << a.matricula << " " << a.media;
}read() e write() usam a quantidade de bytes de cada registro.
Aluno a;
while (entrada.read(reinterpret_cast<char*>(&a),
sizeof(Aluno))) {
cout << a.matricula << "\n";
}O próprio retorno de read() informa se uma leitura completa ocorreu.
Arquivos binários permitem acessar posições específicas quando os registros têm tamanho fixo.
long posicao = 2;
entrada.seekg(posicao * sizeof(Aluno), ios::beg);
entrada.read(reinterpret_cast<char*>(&a), sizeof(Aluno));seekg() move a posição de leitura; seekp() move a posição de escrita.
ios::binary.string esperando que sejam reconstruídas automaticamente.Grave cinco registros Produto em um arquivo binário e depois leia o maior preço.
Gabarito orientador: Use uma struct com tipos simples, write() para gravar e read() em um laço para ler. Verifique abertura e leitura.
Use estas fontes para consultas pontuais depois da aula:
Os slides completos, o Campus Virtual e o DREDD continuam sendo as fontes principais da disciplina.
PRÓXIMA AULA
Prof. Paulo Rettore
GAC124 — Introdução aos Algoritmos