Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

4ºAula
Manipulação de arquivos do 
tipo texto
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
criar arquivos através da linguagem de programação;
realizar leitura e escrita em arquivos criados.
Olá, caros(as) alunos(as), 
Nesta aula, vamos apreender como os arquivos de dados 
são criados, atualizados e utilizados na linguagem C++. 
Veremos técnicas de como manipular arquivos através da 
linguagem de programação C++. Veremos que para manipular 
arquivos em C++ utilizamos uma biblioteca que nos permite 
utilizar métodos bem semelhantes aos utilizados na leitura e 
escrita de tela.
Bons estudos!
151
Linguagem de programação II 26
1. Manipulação de arquivos do tipo texto
2. Biblioteca fstream
3. Modo de abertura
Armazenar dados em variáveis é guardar dados de forma 
temporária, ou seja, ao término da execução do programa 
os dados deixam de existir, já que ficam na memória. Para o 
armazenamento permanente dos dados de uma aplicação, é 
necessária a utilização de uma estrutura que guarde esses dados 
em lugar permanente, ou seja, em disco ou fitas, que podem 
ser através de banco de dados ou arquivos (DEITEL, 2012).
Existem dois tipos de streams: sequência de bytes de dados 
e caracteres em C/C++:
Texto que é composto apenas de caracteres com 
no máximo 255 caracteres por linhas. Cada linha é 
finalizada pelo caractere \0 (fim de linha).
Binário que é qualquer tipo de dado, incluindo texto. 
Por exemplo, no modo texto, a combinação dos 
caracteres correspondentes ao carriage return (CR) e 
line feed (LF) em um arquivo são interpretados como 
um “\n” ao imprimir na tela. Já um arquivo binário, 
não recebe tratamento específico, sendo impresso os 
caracteres “especiais” como parte da mesma linha 
(BARANAUSKAS, 2006).
Como vimos na aula 2, a linguagem C++ possui um 
conjunto grande de bibliotecas que, por sua vez, possuem 
inúmeras funções que nos auxiliam na programação, portanto, 
utilizaremos uma biblioteca da linguagem que nos oferece 
uma maneira rápida e eficiente de trabalhar com arquivos. A 
biblioteca do C++ é uma das mudanças em relação ao modelo 
trabalhado na sua antecessora, utilizaremos uma biblioteca 
que nos permite a leitura e escrita de forma semelhante ao cin 
cout oferecida pela biblioteca . A biblioteca que 
nos permite realizar essa manipulação de stream é a 
(BARANAUSKAS, 2006).
2 - A biblioteca fstream
Sempre que é necessária a utilização de um recurso oferecido 
através de uma biblioteca, precisamos adicionar uma biblioteca 
no cabelho de nosso programa. Nesse caso, precisamos 
especificar a biblioteca para a manipular os dados de stream. A 
biblioteca responsável por essa manipulação de arquivos é a de 
“fstream”, de “file stream” (fluxo de arquivos) (GARCIA, 
2011):
As duas contém funções que trabalham com entrada 
e saída de dados. No entanto, a biblioteca iostream trabalha 
Seções de estudo
1 - Manipulação de arquivos do tipo 
texto
apenas com o fluxo de dados via monitor/teclado/periféricos, 
enquanto que a biblioteca fstream trabalha com o fluxo de 
dados de arquivos (TREVELLIN, 2007).
2.1 - Os objetos de fstream
Uma vez adicionada a biblioteca, podemos criar objetos 
em nossos programas que servirão de intermediários entre 
o programa e os arquivos manipulados. A biblioteca fstream 
define três tipos de objetos para esta função, cada um com 
objetivo definido (GARCIA, 2011):
ofstream: objetos que escrevem dados em um arquivo.
ifstream: objetos que leem dados em um arquivo.
fstream: objetos que podem tanto ler como escrever 
em um arquivo.
2.2 - Escrevendo em um arquivo
Podemos definir as etapas para criarmos e escrevermos 
em um arquivo através da linguagem C++:
Primeiramente, devemos criar objeto do tipo ofstream. 
Logo depois, precisamos associar este objeto com um arquivo 
e utilizar o objeto para enviar dados para o arquivo, de forma 
bem parecida como usamos o comando cout. A diferença é 
que os dados vão para o arquivo, ao invés de serem exibidos na 
tela (DEITEL, 2012).
A criação de um objeto para manipulação de arquivo é 
igual a uma declaração de variável. Primeiramente, declaramos 
seu tipo e, em seguida, o nome da variável, sendo assim 
podemos definir um objeto de ofstream da seguinte maneira:
Ou seja:
No código acima, criamos um objeto do tipo ofstream 
chamado de escreve. Esse objeto agora é capaz de escrever 
em arquivos armazenado em disco. No entanto, ainda não 
definimos nenhum arquivo a esse objeto, portanto, devemos 
associar este objeto a um arquivo. Para isso, utilizaremos a 
função open( ), para abrir um arquivo desejado ou criar um 
arquivo em disco (TREVELLIN, 2007). Por exemplo, vamos 
utilizar o objeto “escreve” para criar um arquivo chamado 
“texto.txt”. Para realizar esta tarefa, devemos escrever o 
seguinte comando
Ao utilizarmos esse comando, estamos associando nosso 
objeto escreve ao arquivo texto.txt. Lembrando que a função 
open pode abrir um arquivo existente ou criar um, caso não 
exista. 
Após a abertura do arquivo é possível escrever dados 
dentro dele de maneira bem simples, muito parecido com 
a utilização do método cout na escrita em tela. Portanto, 
da mesma forma que escreveríamos com o comando cout 
utilizando textos ou variáveis do tipo char, strings, int, ou 
qualquer outro tipo variável. Também podemos utilizar todos 
esses recursos com o objeto do tipo ofstream, com a diferença 
que estas informações serão gravadas em um arquivo. O 
152
27
exemplo a seguir apresenta um modelo de utilização do ofstream 
através do objeto “escreve” para escrever diversos dados em 
um arquivo (TREVELLIN, 2007).
#include 
#include 
using namespace std;
int main()
{
 string frase;
 coutpossíveis 
erros. No código a seguir é exemplificado um modelo de código 
que deve ser utilizado em qualquer programa de computador 
que desejamos realizar leitura ou escrita em arquivos. No 
código abaixo é apresentado um exemplo de validar um 
possível erro na abertura do arquivo, ou seja, é verificado se 
o objeto responsável pela escrita ou leitura conseguiu abrir o 
arquivo. Caso um erro seja encontrado, o programa indica que 
o arquivo não pode ser aberto e a execução é terminada. Caso 
contrário, o programa continua sua execução normalmente 
(TREVELLIN, 2007).
if(!escreve.is_open( ))
{
 cout
#include 
#include 
using namespace std;
int main()
{
 char letra;
 ifstream leitura;
 leitura.open(“texto.txt”);
 if(!leitura.is_open( ))
 {
 cout
#include 
#include 
154
29
using namespace std;
int main()
{
char vetor[300];
 ifstream leitura;
 leitura.open(“texto.txt”);
if(!leitura.is_open( ))
{
 cout
#include 
#include 
using namespace std;
int main()
{
 string texto;
 ifstream leitura;
 leitura.open(“texto.txt”);
if(!leitura.is_open( ))
{
 couta leitura de 
todos os caracteres até o fim de arquivo, incluindo inclusive 
quebras de linha. Enquanto o método getline utiliza as quebras 
de linha para determinar o fim de sua leitura, descartando 
assim a leitura delas.
Se voltarmos e analisarmos os dois exemplos anteriores, 
vamos verificar que na abordagem utilizando o método get 
não houve necessidade de adicionar o \n para controle de 
quebra de linha, enquanto na abordagem com o getline, tanto 
para string como para vetor de caractere houve necessidade 
de inserir o \n na impressão dos dados. Não podemos definir 
essa diferença nem como boa ou ruim, simplesmente é uma 
característica de cada método. No entanto, é preciso ter em 
mente que cada acesso de um objeto fstream a um arquivo tem 
um custo de processamento, ou seja, para um arquivo grande 
com centenas de linhas, logo vamos ter milhares de caracteres, 
o que significa que o método get acessará muito mais vezes 
o mesmo arquivo do que o método getline (TREVELLIN, 
2007).
3 - Modos de Arquivo
Quando abrimos um arquivo, podemos querer fazer 
diferentes coisas com o conteúdo deste arquivo. Podemos 
querer continuar a escrever no fim do arquivo, dando 
continuidade aos dados já escritos nele. Podemos querer apagar 
todos os dados já escritos e começar do zero novamente. Os 
modos de arquivo servem justamente para isto: para definir 
como deve ser o comportamento de um arquivo quando 
acessado pelo programa. Podemos definir que o arquivo será 
utilizado somente para leitura ou somente escrita, se será 
utilizado para anexar dados ou se será reescrito totalmente. 
Definimos o modo do arquivo quando abrimos ele com um 
objeto, adicionando um parâmetro novo ao método open. 
Vejam a sintaxe a seguir (TREVELLIN, 2007):
ou
A tabela a seguir resume os modos de arquivo disponíveis 
em C++.
Ao abrirmos um arquivo por um objeto ofstream não 
há necessidade de definir um modo de arquivo ofstream::out, 
já que este modo já é definido para este tipo de objeto. O 
155
Linguagem de programação II 30
mesmo ocorre com o modo ifstream::in e os objetos ifstream 
(TREVELLIN, 2007).
Além disso, por definição, um arquivo aberto por um 
objeto ofstream irá truncar os dados já existentes no arquivo, 
escrevendo os dados novos “por cima” dos antigos. Porém, o 
modo ofstream::app nos permite anexar dados ao final de um 
arquivo. O exemplo a seguir utiliza o modo ofstream::app para 
criar uma espécie de “agenda” simplificada em um arquivo de 
texto (GARCIA, 2011).
#include 
#include 
#include 
using namespace std;
int main()
{
int dia, mes;
 string texto;
 cout> dia;
cout > mes;
 agenda . Ao compararmos 
com o exemplo anterior, podemos observar a semelhança 
entre eles.
Retomando a aula
1 - Manipulação de arquivos do tipo texto
Na seção 1, vimos que ao declararmos uma variável ou 
matriz, nós não guardamos os dados de nosso sistema, ou seja, 
eles existem apenas enquanto o programa está em execução. 
Também foi apresentado uma forma desses dados existirem 
após essa execução, através da manipulação de arquivo na 
linguagem C++. 
2 - Biblioteca fstream
Na seção 2, estudamos a biblioteca que 
oferece recursos para criar ou abrir um arquivo de texto ou 
binário, e também oferece funções de escrita e leitura nesses 
arquivos, bem semelhantes as da biblioteca . 
Sendo assim, ao trabalharmos com a biblioteca 
verificamos que ela nos oferece métodos que nos possibilita 
trabalhar com arquivos de maneira simples e fácil.
3 - Modo de abertura
Na seção 3, estudamos que podemos definir para qual 
finalidade queremos abrir um arquivo, ou seja, podemos definir 
tipos de abertura de um arquivo, fato esse que torna ainda 
mais fácil a manipulação de arquivos na nossa programação.
ELLIS, Margaret A.; BEAUVOIR, Simone de; 
DIAFéRIA, Lourenço. C++ : manual de referência 
comentada. Rio de Janeiro: Campus, 1993.
TREVELIN, Enrique Camargo. Apostila de C++; 
UNIESP; 2007. FILHO, Cláudio Rogério Carvalho. 
Operadores Lógicos Do C++; excript; 2017.
ASCENCIO, Ana Fernanda Gomes; CAMPOS, 
Edilene Aparecida Veneruchi de. Fundamentos da programação 
de computadores : algoritmos, pascal, C/C++ (padrão ANSI) e 
java. 3. ed. São Paulo: Pearson Prentice Hall, 2014.
Vale a pena ler
Manipulação de arquivos em C++. Disponível em: 
. Acesso em: 24 de ago. de 2018.
Entrada de dados 2. Disponível em: . Acesso em: 24 
de ago. de 2018.
Vale a pena acessar
Vale a pena
156
31
Dicas de C++ - Leitura e Escrita em Arquivos. 
Disponível em: . Acesso em: 21 de ago. de 2018.
Trabalhando com arquivos em Cpp/C++. Disponível 
em: . Acesso em: 21 de ago. de 2018. 
Vale a pena assistir
Minhas anotações
157

Mais conteúdos dessa disciplina