Manipulação de Arquivos em C++: Dominando Operações Open, Read, Write e Close
O que é Manipulação de Arquivos em C++?
A manipulação de arquivos permite persistir dados do programa em dispositivos de armazenamento. Ao direcionar a saída do programa para um arquivo, você pode realizar manipulação, análise ou arquivamento posteriores nesses dados.
Um stream (fluxo) é uma abstração que representa uma fonte ou destino contínuo de caracteres. O C++ fornece uma robusta biblioteca fstream que oferece classes e funções para trabalhar perfeitamente com arquivos.
Neste tutorial você aprenderá:
- Definição de manipulação de arquivos em C++
- A biblioteca
fstreame suas classes - Abrindo arquivos em vários modos
- Fechando arquivos com segurança
- Escrevendo dados em arquivos
- Lendo dados de arquivos
A Biblioteca fstream
A biblioteca fstream fornece três classes principais:
- ofstream – stream de saída para criar e escrever arquivos.
- ifstream – stream de entrada para ler arquivos existentes.
- fstream – stream combinado que suporta operações de entrada e saída.
Para usar estas classes, inclua o cabeçalho fstream e, se desejar saída para console, iostream também.
Como Abrir Arquivos
Antes de qualquer operação de arquivo, o arquivo deve ser aberto. Use ofstream para acesso somente escrita, ifstream para somente leitura, e fstream para ambos. Cada classe fornece um membro open():
open(nome_arquivo, modo);
- nome_arquivo – o caminho ou nome do arquivo alvo.
- modo – opcional; especifica tipo de acesso. Flags comuns incluem:
| Valor | Descrição |
|---|---|
| ios::app | Modo append – escritas são adicionadas ao final do arquivo. |
| ios::ate | Abre e posiciona imediatamente no final. |
| ios::in | Abre para leitura. |
| ios::out | Abre para escrita. |
| ios::trunc | Trunca arquivo existente para comprimento zero. |
Múltiplas flags podem ser combinadas usando o operador OR bitwise (|).
Exemplo 1: Criando um Arquivo
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream meu_arquivo;
meu_arquivo.open("meu_arquivo", ios::out);
if (!meu_arquivo) {
cout << "Arquivo não criado!";
} else {
cout << "Arquivo criado com sucesso!";
meu_arquivo.close();
}
return 0;
}
Análise do Código:
- Inclui
iostreampara I/O de console. - Inclui
fstreampara streams de arquivo. - Usa namespace
stdpara brevidade. - Instancia um objeto
fstreamchamadomeu_arquivo. - Abre o arquivo em modo de escrita (
ios::out). - Verifica abertura bem-sucedida; caso contrário, relata falha.
- Em sucesso, imprime confirmação e fecha o arquivo.
- Retorna
0para indicar terminação normal.
Como Fechar Arquivos
Embora o C++ automaticamente dê flush e feche streams na saída do programa, fechar explicitamente um arquivo após sua última operação é considerada boa prática.
O membro close() está disponível em fstream, ofstream e ifstream:
void close();
Como Escrever em Arquivos
Operações de escrita usam o operador de inserção de stream (<<). Texto a ser armazenado deve ser citado ou transmitido diretamente.
Exemplo 2: Escrevendo Texto
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream meu_arquivo;
meu_arquivo.open("meu_arquivo.txt", ios::out);
if (!meu_arquivo) {
cout << "Arquivo não criado!";
} else {
cout << "Arquivo criado com sucesso!";
meu_arquivo << "Guru99";
meu_arquivo.close();
}
return 0;
}
Análise do Código:
- Inclui cabeçalhos necessários.
- Cria um objeto
fstream. - Abre o arquivo alvo em modo de escrita.
- Valida o stream de arquivo.
- Insere a string "Guru99" no arquivo.
- Fecha o stream.
- Retorna
0.
Como Ler de Arquivos
Leitura usa o operador de extração de stream (>>) igual ao cin. Os dados são transmitidos para variáveis de tipos apropriados.
Exemplo 3: Lendo Caracteres
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream meu_arquivo;
meu_arquivo.open("meu_arquivo.txt", ios::in);
if (!meu_arquivo) {
cout << "Arquivo não encontrado";
} else {
char ch;
while (true) {
meu_arquivo >> ch;
if (meu_arquivo.eof()) break;
cout << ch;
}
}
meu_arquivo.close();
return 0;
}
Análise do Código:
- Inclui
iostreamefstream. - Abre o arquivo para leitura (
ios::in). - Verifica existência; se ausente, notifica o usuário.
- Lê caracteres um a um até EOF ser atingido.
- Imprime cada caractere no console.
- Fecha o stream.
- Retorna
0.
Resumo
- Manipulação de arquivos persiste saída do programa em armazenamento durável.
- Streams abstraem dispositivos de entrada e saída.
- A biblioteca
fstreamfornece classes para todas as operações comuns de arquivo. - Sempre inclua
<fstream>(e<iostream>se necessário) no topo do seu fonte. - Abra arquivos com modos apropriados, realize ações desejadas, então feche os streams.
Linguagem C
- Manipulação de Arquivos em C: Dominando I/O com fopen, fprintf, fread e fseek
- Inicializando Block RAM de FPGA a partir de Arquivos de Texto Usando a Biblioteca TEXTIO do VHDL
- Dominando Tratamento de Exceções em C++: Exemplos Práticos com Try, Catch, Throw
- Dominando Comentários em C: Escrevendo Notas Claras e Eficazes
- Lendo Arquivos em Java com BufferedReader – Guia Prático com Exemplos
- Entendendo Arquivos de Cabeçalho em C: Tipos, Uso e Boas Práticas
- Dominando I/O de Arquivos em C++: Leitura e Escrita com fstream
- Domine o Tratamento de Sinais em C++: Gestão Segura de Interrupções e Término Limpo de Programas
- Python I/O de Arquivos: Dominando Operações de Entrada e Saída
- Micrômetro Explicado: Como Ler e Usar Esta Ferramenta de Medição de Precisão