Aula 08 - Estruturas e Arquivos 📂
O que é uma Struct?
- Uma estrutura que agrupa variáveis de diferentes tipos sob um único nome.
- Ideal para representar entidades reais (Carro, Aluno, Produto).
Declaração de Struct
struct Aluno {
string nome;
int idade;
float nota;
};
Instanciação e Acesso
Aluno a1;
a1.nome = "Ricardo";
a1.idade = 20;
Inicialização (C++11+)
Aluno a2{"Maria", 22, 9.5f};
Arrays de Structs
Aluno turma[30];
turma[0].nome = "Ana";
Structs Aninhadas
- Uma struct dentro de outra.
struct Endereco { string rua; int num; };
struct Pessoa { string nome; Endereco local; };
Persistência de Dados
- Como salvar dados para que não sumam ao fechar o programa?
- Arquivos!
Biblioteca fstream
#include <fstream>
ifstream: Input (Leitura).
ofstream: Output (Escrita).
fstream: Ambos.
Gravando em Arquivo
ofstream arquivo("teste.txt");
if (arquivo.is_open()) {
arquivo << "Olá arquivo!" << endl;
arquivo.close();
}
Lendo de Arquivo
ifstream leitura("teste.txt");
string linha;
while (getline(leitura, linha)) {
cout << linha << endl;
}
Modos de Abertura
ios::out: Sobrescrever (Padrão ofstream).
ios::app: Adicionar ao fim (Append).
ios::binary: Modo binário.
Verificação de Sucesso
- Sempre teste
if (!arquivo) antes de usar.
- Arquivos podem não abrir por falta de permissão ou caminho errado.
Manipulando Dados Estruturados em Arquivos
- Dica: Salve uma struct por linha, separada por vírgulas (formato CSV).
Parsing de Dados
- Processo de ler uma linha de texto e separar os campos para preencher uma struct.
Arquivos Binários
- Mais rápidos e compactos que arquivos de texto.
- Salvam a imagem exata da memória.
Struct vs Class (Spoiler)
- No C++, a única diferença é que na
struct tudo é público por padrão.
- Na
class, tudo é privado por padrão.
Boas Práticas
- Use letras maiúsculas para nomes de Structs (
Produto).
- Sempre feche o arquivo com
.close().
- O C++ usa um buffer para não escrever no disco a cada letra.
endl força o despejo (flush) do buffer.
Tratamento de Caminhos
- Use caminhos relativos ao executável para portabilidade.
Exemplo Real: Banco de Dados de Alunos
- Criar um menu que permita Cadastrar, Listar e Salvar alunos em disco.
Resumo da Aula
- Structs organizam os dados.
- Arquivos garantem a permanência.
- Validação é obrigatória para evitar travamentos.
Fim da Aula 08
- Próxima aula: Conceitos de POO!