file input output operations c
Um estudo sobre operações de entrada de arquivo e funções de ponteiro de arquivo em C ++.
Na programação em tempo real, lidamos com grandes blocos de dados que não podem ser acomodados em dispositivos de entrada-saída padrão. Portanto, precisamos fazer uso de armazenamento secundário para armazenar dados. Usando o armazenamento secundário, geralmente armazenamos dados na forma de arquivos.
Podemos ler dados de arquivos ou gravar dados em arquivos usando uma sequência de dados chamada streams no formato de texto ou binário. Existem várias entradas / saídas e outras operações relacionadas a arquivos em C ++. Este tutorial explica essas operações relacionadas a arquivos usando várias classes.
=> Visite aqui para obter a série exclusiva de tutoriais de treinamento em C ++.
O que você aprenderá:
Classes de entrada / saída de arquivo em C ++
Vimos uma classe iostream em C ++ que define a funcionalidade de entrada e saída padrão, incluindo cin e cout. Esta classe é limitada aos dispositivos de entrada e saída padrão, como teclado e monitor, respectivamente.
Quando se trata de operações de arquivo, C ++ tem um conjunto diferente de classes que pode ser usado.
Essas classes são descritas a seguir:
- Ofstream: Classe de manipulação de arquivo que significa o fluxo de arquivo de saída e é usada para gravar dados em arquivos.
- Ifstream: Classe de manipulação de arquivo que significa o fluxo de arquivo de entrada e é usada para ler dados do arquivo.
- Fstream: Classe de manipulação de arquivo que tem a capacidade de manipular ifstream e ofstream. Ele pode ser usado para ler e gravar em um arquivo.
As seguintes operações são suportadas, em C ++ File Handling:
- Abra um arquivo
- Fechar um arquivo
- Ler de um arquivo
- Gravar em um arquivo
Vamos ver cada uma dessas operações em detalhes !!
Abra um arquivo
A associação do objeto de uma das classes de fluxo a um arquivo para leitura ou gravação ou ambos é chamada de abertura de arquivo. Um arquivo aberto é representado em código usando este objeto de fluxo. Portanto, qualquer operação de leitura / gravação realizada neste objeto de fluxo será aplicada ao arquivo físico também.
A sintaxe geral para abrir um arquivo com o stream é:
void open(const char* filename, ios::open mode mode)
Aqui,
filename => A string contendo o caminho e o nome do arquivo a ser aberto.
mode => Parâmetro opcional que indica o modo em que o arquivo deve ser aberto.
C ++ suporta vários modos nos quais o arquivo pode ser aberto. Também podemos especificar uma combinação desses modos usando o operador OR.
lançando char para int c ++
Modo de arquivo | Descrição |
---|---|
ios :: em | Abre o arquivo no modo de entrada para leitura. |
ios :: fora | Abre o arquivo no modo de saída para gravar dados no arquivo. |
ios :: ate | Defina a posição inicial no final do arquivo. Se o sinalizador de fim de arquivo não for definido, a posição inicial será definida para o início do arquivo. |
ios :: trunc | Se o arquivo for aberto para gravação e já tiver conteúdo, o conteúdo será truncado. |
ios :: app | Abre o arquivo no modo anexar de forma que todo o conteúdo seja anexado no final do arquivo. |
ios :: binary | Abre o arquivo no modo binário. |
Por exemplo,se quisermos abrir um arquivo “myfile.dat” para acrescentar dados em modo binário, podemos escrever o seguinte código.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Como já mencionado, o parâmetro mode é opcional. Quando abrimos um arquivo sem especificar o segundo parâmetro, uma função-membro aberta de ofstream, ifstream ou fstream tem um modo padrão para abrir o arquivo.
Eles são fornecidos da seguinte forma:
Classe | Modo padrão |
---|---|
Ifstream | ios :: em |
ofstream | ios :: fora |
Fstream | ios :: in | ios :: out |
Portanto, se não especificarmos o segundo parâmetro na função open, dependendo da classe de fluxo usada, o arquivo é aberto com o modo padrão.
Fechando um arquivo
Podemos usar a função close para fechar um arquivo e liberar os recursos mantidos pelo arquivo quando terminarmos com as operações de entrada e saída em um arquivo.
A função para fechar um arquivo é:
void close()
Assim, quando terminarmos as operações no arquivo myfile acima, podemos fechar o arquivo da seguinte maneira:
myfile.close();
Depois que o arquivo é fechado com a função fechar, o objeto de arquivo associado pode ser reutilizado para abrir outro arquivo.
Lendo de um arquivo
Podemos ler as informações de um arquivo linha por linha usando o operador de extração de fluxo (>>). Isso é semelhante a ler a entrada da entrada padrão usando cin. A única diferença é no caso de arquivos, usamos ifstream ou objeto fstream em vez de cin.
O código de amostra para leitura de um arquivo é fornecido abaixo:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<No código acima, abrimos um arquivo e usando o operador de extração de fluxo (>>), lemos o conteúdo do arquivo. Uma vez feita a leitura, podemos fechar o arquivo.
Gravando em um arquivo
Também podemos gravar dados em um arquivo usando as operações de arquivo. O operador que usamos para gravar dados em um arquivo é um operador de inserção de fluxo (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
Vamos considerar o seguinte código de exemplo:
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Aqui, lemos uma linha da entrada e a gravamos em um arquivo que foi aberto com o objeto ofstream.
No exemplo de código abaixo, fornecemos uma demonstração de todas as operações de manipulação de arquivos.
#include #include using namespace std; int main () { char data(100); // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
Resultado:
Gravando no arquivo
Digite seu nome: Ved
Digite sua idade: 7
Lendo de um arquivo
De
7
No programa acima, primeiro abrimos um arquivo no modo de gravação. Em seguida, lemos os dados, ou seja, nome e idade, e os gravamos em um arquivo. Em seguida, fechamos este arquivo. Em seguida, abrimos o mesmo arquivo no modo de leitura e lemos os dados linha por linha do arquivo e os enviamos para a tela.
Portanto, este programa cobre todas as operações de E / S de arquivo.
melhor software conversor de vídeo para windows
File State Slags
Existem algumas funções de membro que são usadas para verificar o estado do arquivo. Todas essas funções retornam um valor booleano.
Tabularizamos essas funções da seguinte maneira:
melhor programa para recuperar arquivos apagados
Função Descrição eof () Retorna verdadeiro se o final do arquivo for alcançado durante a leitura do arquivo. falhou() Retorna verdadeiro quando a operação de leitura / gravação falha ou ocorre um erro de formato mau() Retorna verdadeiro se a leitura ou gravação de um arquivo falhar. Boa() Retorna falso nos mesmos casos em que chamar qualquer uma das funções acima retornaria verdadeiro.
Obter / colocar e outras operações especiais
Os fluxos de E / S de arquivo que vimos até agora têm posições internas de obtenção e colocação semelhantes às de outros fluxos de E / S como o iostream.
A classe ifstream tem uma posição get interna que contém a localização do elemento / caractere a ser lido no arquivo na próxima operação de entrada. A classe ofstream tem uma posição put interna que contém a localização do elemento / caractere a ser escrito na próxima operação de saída.
A propósito, fstream tem posições get e put.
Para facilitar a leitura e a escrita usando essas posições, temos algumas funções-membro que são usadas para observar e modificar essas posições.
Essas funções estão listadas abaixo:
Funções Descrição tellg () Retorna a posição atual do ponteiro de obtenção tellp () Retorna a posição atual do ponteiro de colocação searchg (posição) Move para obter um ponteiro para o local especificado contando a partir do início do arquivo searchg (deslocamento, direção) Os movimentos obtêm um ponteiro para o valor de deslocamento em relação ao ponto fornecido pela direção do parâmetro. searchp (posição) Move para colocar um ponteiro para o local especificado, contando a partir do início do arquivo searchp (deslocamento, direção) Os movimentos colocam um ponteiro no valor de deslocamento em relação ao ponto fornecido pela direção do parâmetro.
O parâmetro direção dado nos protótipos de função acima é um enumerado tipo de tipo seedir e determina o ponto a partir do qual o deslocamento é contado.
Ele pode ter os seguintes valores.
ios :: implorar Offset do início do stream ios :: cur Offset da posição atual ios :: end Deslocado do final do fluxo
Vejamos um exemplo completo que demonstra o uso dessas funções.
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'< Resultado:
Novo arquivo criado
Posição inicial do indicador de arquivo em: 34
Depois de seekp (-1, ios :: cur), Posição do ponteiro do arquivo em: 33
Após seekg (5, ios :: beg), Ponteiro de Arquivo em: 5
Depois de seekg (1, ios :: cur), Ponteiro de Arquivo em: 6

Conforme mostrado no programa acima, temos um arquivo criado no qual escrevemos uma linha de texto. Em seguida, usando as várias funções descritas acima, exibimos várias posições do Ponteiro de Arquivo.
Conclusão
Neste tutorial, vimos as várias operações de arquivo para abrir, fechar e ler / gravar dados de / para um arquivo.
Também vimos as funções para alterar o ponteiro do arquivo para acessar posições específicas no arquivo. Em nossos tutoriais subsequentes, discutiremos alguns tópicos mais importantes relacionados ao C ++.
=> Leia a série de treinamento Easy C ++.
Leitura recomendada
- Operações básicas de entrada / saída em C ++
- Entrada-saída e arquivos em Python (Python abrir, ler e gravar em arquivo)
- Operações básicas de E / S em Java (fluxos de entrada / saída)
- Manipulação de arquivos no Unix: Visão geral do sistema de arquivos Unix
- Caracteres especiais do Unix ou metacaracteres para manipulação de arquivos
- Permissões de acesso a arquivos Unix: Unix Chmod, Chown e Chgrp
- Objetos de arquivo VBScript: CopyFile, DeleteFile, OpenTextFile, Read and Write Text File
- Implantação Java: Criação e execução de arquivo JAR Java