HomeSharpStack
cpp5 min

Operações de Entrada e Saída em Arquivos com C++

Operações de Entrada e Saída em Arquivos com C++

Trabalhar com arquivos é uma habilidade essencial em programação. C++ oferece ferramentas poderosas para ler e escrever dados em arquivos de forma segura e eficiente. Neste guia, você aprenderá como usar file streams para manipular arquivos.

O que são File Streams?

Um file stream é um objeto que conecta seu programa a um arquivo no disco. Existem três tipos principais:

  • ifstream - para ler arquivos (input file stream)
  • ofstream - para escrever em arquivos (output file stream)
  • fstream - para ler e escrever no mesmo arquivo

Todos estão disponíveis na biblioteca <fstream>.

Escrevendo em um Arquivo

Vamos começar com um exemplo simples de escrita:

#include <fstream>
#include <iostream>
using namespace std;

int main() {
    ofstream arquivo("dados.txt");
    
    if (arquivo.is_open()) {
        arquivo << "Olá, mundo!\n";
        arquivo << "Primeira linha de dados\n";
        arquivo.close();
        cout << "Arquivo escrito com sucesso!" << endl;
    } else {
        cout << "Erro ao abrir arquivo" << endl;
    }
    
    return 0;
}

Observe que:

  • Criamos um objeto ofstream com o nome do arquivo
  • Verificamos se o arquivo foi aberto com is_open()
  • Usamos o operador << para escrever dados
  • Fechamos o arquivo com close()

Lendo de um Arquivo

Agora vamos ler o arquivo que criamos:

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main() {
    ifstream arquivo("dados.txt");
    string linha;
    
    if (arquivo.is_open()) {
        while (getline(arquivo, linha)) {
            cout << linha << endl;
        }
        arquivo.close();
    } else {
        cout << "Erro ao abrir arquivo" << endl;
    }
    
    return 0;
}

Aqui usamos:

  • ifstream para ler o arquivo
  • getline() para ler uma linha inteira
  • Um loop while para processar todas as linhas

Trabalhando com Dados Estruturados

Você pode escrever e ler números também:

#include <fstream>
#include <iostream>
using namespace std;

int main() {
    // Escrevendo números
    ofstream saida("numeros.txt");
    for (int i = 1; i <= 5; i++) {
        saida << i << " ";
    }
    saida.close();
    
    // Lendo números
    ifstream entrada("numeros.txt");
    int numero;
    while (entrada >> numero) {
        cout << numero * 2 << endl;
    }
    entrada.close();
    
    return 0;
}

Boas Práticas para Segurança

1. Sempre verifique se o arquivo foi aberto:

if (!arquivo.is_open()) {
    cerr << "Falha ao abrir arquivo" << endl;
    return 1;
}

2. Feche arquivos quando terminar: Isso libera recursos do sistema. Você também pode usar a destruição automática do objeto.

3. Trate exceções se necessário:

try {
    ifstream arquivo("dados.txt");
    if (!arquivo) throw runtime_error("Arquivo não encontrado");
} catch (const exception& e) {
    cerr << "Erro: " << e.what() << endl;
}

Modos de Abertura

Você pode controlar como um arquivo é aberto usando flags:

  • ios::in - leitura (padrão para ifstream)
  • ios::out - escrita (padrão para ofstream)
  • ios::app - adiciona ao final do arquivo
  • ios::binary - modo binário
// Adicionar dados ao final do arquivo
ofstream arquivo("dados.txt", ios::app);
arquivo << "Nova linha adicionada\n";
arquivo.close();

Resumo Prático

As operações de arquivo em C++ seguem um padrão simples: abrir → verificar → usar → fechar. Com essas ferramentas, você pode criar programas que persistem dados entre execuções, uma habilidade fundamental em desenvolvimento de software.

Key Takeaways

  • Use ifstream para ler arquivos, ofstream para escrever e fstream para ambas as operações
  • Sempre verifique se um arquivo foi aberto com sucesso antes de usá-lo com is_open()
  • Feche arquivos após terminar para liberar recursos do sistema e garantir que os dados sejam salvos

Enjoyed this reading?

SharpStack delivers personalized tech readings every day, calibrated to your skill level. 5 minutes a day to stay sharp.

“Stay sharp. At your pace. Everyday.”