Pular para o conteúdo

Manipulação de arquivos em C++

Neste breve artigo faço uma apresentação do conceito de arquivos, como o sistema operacional os encara, em especial em sistemas Linux e como é sua manipulação em C++, com códigos de exemplo de leitura e/ou gravação dos mesmos.
Matheus Santana Lima matheusslima
Hits: 140.339 Categoria: C/C++ Subcategoria: Manipulação de Arquivos
  • Indicar
  • Impressora
  • Denunciar

Parte 2: Manipulação de arquivos - Como funciona?

Para a manipulação (leitura e/ou escrita) e criação de arquivo é necessário que façamos uma referência do mesmo à um espaço da memória. Para tanto, o C++ utiliza as classes iostream e fstream.h.

Para realizar gravação em arquivos, fazemos:

ofstream fgrava("livro.txt"); //O objeto fgrava faz referência ao arquivo livro.txt

Para realizar leitura em arquivos, fazemos:

ifstream fleitura("livro.txt"); //O objeto fleitura faz referência ao arquivo livro.txt

Para realizar leitura e gravação em arquivos, fazemos:

fstream fio;
fio.open("livro.txt"); //O objeto 'fio' recebe a referência ao arquivo livro.txt

Manipulação de arquivos, é, de certa forma, parecida com a manipulação de vetores, ambos trabalham com o conceito de posição, a diferença se dá no fato de que arquivos não tem um limite de posições, ao contrário do que ocorre com vetores, assim, teoricamente, podemos adicionar novos registros até o limite físico do disco rígido.
Linux: Manipulação de arquivos em C++
Podemos escolher a posição em que queremos trabalhar no arquivo, para tanto, usamos a função:

<nome_da_objeto_de_entrada_e_saida_de_dados>.seekg(X);

X deve receber a posição do registro no arquivo. Em C++, ao contrário do que ocorre em algoritmo, X não recebe 0, 1, 2, 3 ..., mas sim a posição do registro em forma binária. Para tanto, usamos o seguinte artifício:

sizeof(nome_do_objeto_molde_do_registro)

Posteriormente ilustraremos como utilizar a função sizeof para o posicionamento do arquivo.

   1. O que são arquivos?
   2. Manipulação de arquivos - Como funciona?
   3. O que são as classes iostream e fstream.h
   4. Exemplo de gravação - (ofstream) - Gravando um registro
   5. Exemplo de gravação - (ifstream) - Lendo um registro
   6. Exemplo de gravação - (ofstream) - Gravando vários registros
   7. Exemplo de gravação - (ifstream) - Lendo vários registros
   8. Exemplo de gravação e leitura - (fstream)

Gerenciando serviços de sistemas Linux

Polimorfismo - Uma visão em C++ e Java

Rodando aplicações nativas de Windows em Linux pela Web

Linux, 100% compatível!

Ubuntu Completo e Total

Manipulando arquivos em C (parte 2)

Manipulando arquivos em C (parte 1)

Manipulação de imagens no formato PPM

DoTheWorld - Biblioteca completa para manipulação de Arquivos e Pastas em C

Gerenciando pacotes para C/C++ com Conan

#1 Comentário enviado por marcrock em 13/11/2008 - 15:21h
Muito bom cara !!!!
Você foi bem objetivo, mesmo eu sem grandes conhecimentos de C++ entendi tudo !

Até mais .
#2 Comentário enviado por vsenna em 17/11/2008 - 02:25h
Muito bom seu texto, está escrito de forma bem clara!

[]'s
#3 Comentário enviado por andrezc em 11/04/2010 - 19:35h
Há alguns erros. Por exemplo, no primeiro código faltou uma biblioteca, a cstring, para usar a função strcpy(). E você usou bibliotecas da linguagem C, como stdio.h. O correto seria:

#include <cstdio>

mesma coisa com

#include <fstream.h>

o correto seria:

#include <fstream>


André
[]'s
#4 Comentário enviado por cibele_fni@ em 16/06/2011 - 12:36h
como faço um programa em c++ que verifique quais as letras do alfabeto estao faltando em um texto por favome ajude envie para:cibele_fni@hotmail.com
#5 Comentário enviado por DarthVictor em 26/06/2011 - 13:56h
Muito bom. Apesar de sempre ter usado #include <cstdlib.h>, fprinf, fscanf, etc; em C++. Gosto mais das funções em C e muitos programas tem de ser escritos orientado a objetos.
#6 Comentário enviado por LucianoAlexandre em 15/03/2012 - 07:41h
Legal, muito bom o artigo!!!
#7 Comentário enviado por CiroboyBR em 15/05/2015 - 05:42h
Bem fácil de entender. vlw pelo tuto.

Contribuir com comentário

Entre na sua conta para comentar.