Capítulo 16: Arquivos (Leitura e Escrita) 📝🧟
Neste capítulo, vamos aprender a salvar e ler informações em arquivos de texto externos para que elas não se percam quando o programa for fechado, com o tema The Last of Us! No C++, usamos objetos chamados Streams.
📖 Por que usar Arquivos?
Até agora, todas as variáveis que criamos sumiam da memória assim que o programa terminava. Para salvar o progresso de um jogo ou manter um registro (log) de sobreviventes, precisamos gravar esses dados no disco rígido do computador!
No C++, usamos a biblioteca <fstream> que nos dá o ofstream (para escrever) e o ifstream (para ler).
📖 Exemplo Guiado: Registro de Sobreviventes
Vamos criar um programa que salva o nome de um sobrevivente em um arquivo chamado diario.txt.
- Crie o arquivo
salvar_sobrevivente.cppna pastasrc/:
#include <iostream>
#include <fstream> // Biblioteca para arquivos
#include <string>
using namespace std;
int main() {
// Objeto para escrita em arquivo
ofstream arquivo;
// Abrindo o arquivo no modo de escrita
// Se não existir, ele cria. Se existir, ele apaga o conteúdo e recria!
arquivo.open("diario.txt");
if (!arquivo.is_open()) {
cout << "Erro ao abrir o arquivo!" << endl;
return 1;
}
// Escrevendo no arquivo (funciona igual ao cout!)
arquivo << "Registro de Sobrevivente" << endl;
arquivo << "Nome: Joel" << endl;
arquivo << "Status: Saudavel" << endl;
// REGRA DE OURO: Sempre feche o arquivo!
arquivo.close();
cout << "Dados salvos no diario.txt com sucesso!" << endl;
return 0;
}🕹️ Como Executar e Testar no VS Code
- Abra o terminal integrado.
- Compile:
g++ salvar_sobrevivente.cpp -o salvar_sobrevivente - Execute:
./salvar_sobrevivente - Um arquivo chamado
diario.txtaparecerá na sua pasta! Abra-o para ver o conteúdo.
📊 Ilustração Visual: Fluxo de Escrita
Veja como o C++ envia os dados para o disco:
graph LR A["💻 Programa em C++"] -->|1. .open| B[Objeto ofstream] B -->|"2. <<"| C["💾 Arquivo: diario.txt"] C -->|3. .close| C
🛠️ Prática Obrigatória 1: Modo Append (Anexar)
Por padrão, o ofstream apaga o arquivo se ele já existir. Para apenas ADICIONAR novas linhas no final do arquivo, usamos o modo ios::app. Crie um programa chamado anexar_nota.cpp que use arquivo.open("diario.txt", ios::app) para adicionar a linha “Nota: Cuidado com os estaladores!” no arquivo diario.txt.
🔑 Gabarito de Código
Prática 1: anexar_nota.cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream arquivo;
// Modo append (anexar)
arquivo.open("diario.txt", ios::app);
if (!arquivo.is_open()) {
cout << "Erro ao abrir o arquivo!" << endl;
return 1;
}
arquivo << "Nota: Cuidado com os estaladores!" << endl;
arquivo.close();
cout << "Nota adicionada ao diario!" << endl;
return 0;
}📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o padrão estabelecido no Guia)