Manipulação de arquivos C++:como abrir, escrever, ler, fechar arquivos em C++
O que é manipulação de arquivos em C++?
Os arquivos armazenam dados permanentemente em um dispositivo de armazenamento. Com a manipulação de arquivos, a saída de um programa pode ser armazenada em um arquivo. Várias operações podem ser executadas nos dados enquanto estão no arquivo.
Um fluxo é uma abstração de um dispositivo onde as operações de entrada/saída são realizadas. Você pode representar um fluxo como destino ou origem de caracteres de comprimento indefinido. Isso será determinado pelo seu uso. C++ fornece uma biblioteca que vem com métodos para manipulação de arquivos. Vamos discuti-lo.
Neste tutorial de c++, você aprenderá:
- O que é manipulação de arquivos em C++?
- A biblioteca fstream
- Como abrir arquivos
- Como fechar arquivos
- Como gravar em arquivos
- Como ler arquivos
A biblioteca fstream
A biblioteca fstream fornece aos programadores C++ três classes para trabalhar com arquivos. Essas aulas incluem:
- do fluxo – Esta classe representa um fluxo de saída. É usado para criar arquivos e gravar informações em arquivos.
- ifstream – Esta classe representa um fluxo de entrada. É usado para ler informações de arquivos de dados.
- fstream – Essa classe geralmente representa um fluxo de arquivos. Ele vem com recursos ofstream/ifstream. Isso significa que ele é capaz de criar arquivos, gravar em arquivos, ler arquivos de dados.
A imagem a seguir facilita o entendimento:

Para usar as classes acima da biblioteca fstream, você deve incluí-la em seu programa como um arquivo de cabeçalho. Claro, você usará a diretiva de pré-processador #include. Você também deve incluir o arquivo de cabeçalho iostream.
Como abrir arquivos
Antes de realizar qualquer operação em um arquivo, você deve primeiro abri-lo. Se você precisar gravar no arquivo, abra-o usando objetos fstream ou ofstream. Se você precisar apenas ler o arquivo, abra-o usando o objeto ifstream.
Os três objetos, ou seja, fstream, ofstream e ifstream, têm a função open() definida neles. A função usa esta sintaxe:
open (file_name, mode);
- O parâmetro file_name denota o nome do arquivo a ser aberto.
- O parâmetro mode é opcional. Pode assumir qualquer um dos seguintes valores:
É possível usar dois modos ao mesmo tempo. Você os combina usando o | (OR) operador.
Exemplo 1:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
Saída:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream no programa para usar suas funções.
- Inclua o arquivo de cabeçalho fstream no programa para usar suas classes.
- Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
- Chame a função main(). A lógica do programa deve estar dentro de seu corpo.
- Crie um objeto da classe fstream e dê a ele o nome my_file.
- Aplique a função open() no objeto acima para criar um novo arquivo. O modo out nos permite escrever no arquivo.
- Use a instrução if para verificar se a criação do arquivo falhou.
- Mensagem a ser impressa no console caso o arquivo não tenha sido criado.
- Fim do corpo da instrução if.
- Use uma instrução else para indicar o que fazer se o arquivo foi criado.
- Mensagem a ser impressa no console se o arquivo foi criado.
- Aplique a função close() no objeto para fechar o arquivo.
- Fim do corpo da instrução else.
- O programa deve retornar o valor se for concluído com êxito.
- Fim do corpo da função main().
Como fechar arquivos
Uma vez que um programa C++ termina, ele automaticamente
- libera os fluxos
- libera a memória alocada
- fecha os arquivos abertos.
No entanto, como programador, você deve aprender a fechar arquivos abertos antes que o programa termine.
Os objetos fstream, ofstream e ifstream possuem a função close() para fechar arquivos. A função usa esta sintaxe:
void close();
Como gravar em arquivos
Você pode gravar no arquivo diretamente do seu programa C++. Você usa o operador de inserção de fluxo (<<) para isso. O texto a ser escrito no arquivo deve ser colocado entre aspas duplas.
Vamos demonstrar isso.
Exemplo 2:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
Saída :
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream no programa para usar suas funções.
- Inclua o arquivo de cabeçalho fstream no programa para usar suas classes.
- Inclua o namespace std no programa para usar suas classes sem chamá-lo.
- Chame a função main(). A lógica do programa deve ser adicionada ao corpo desta função.
- Crie uma instância da classe fstream e dê a ela o nome my_file.
- Use a função open() para criar um novo arquivo chamado my_file.txt. O arquivo será aberto no modo de saída para escrita nele.
- Use uma instrução if para verificar se o arquivo não foi aberto.
- Texto a ser impresso no console se o arquivo não for aberto.
- Fim do corpo da instrução if.
- Use uma instrução else para indicar o que fazer se o arquivo foi criado.
- Texto a ser impresso no console se o arquivo foi criado.
- Escreva algum texto no arquivo criado.
- Use a função close() para fechar o arquivo.
- Fim do corpo da instrução else.
- O programa deve retornar o valor após a conclusão bem-sucedida.
- Fim do corpo da função main().
Como ler arquivos
Você pode ler informações de arquivos em seu programa C++. Isso é possível usando o operador de extração de fluxo (>>). Você usa o operador da mesma forma que o usa para ler a entrada do usuário no teclado. No entanto, em vez de usar o objeto cin, você usa o objeto ifstream/fstream.
Exemplo 3:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::in); if (!my_file) { cout << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
Saída:
Arquivo inexistente
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream no programa para usar suas funções.
- Inclua o arquivo de cabeçalho fstream no programa para usar suas classes.
- Inclua o namespace std no programa para usar suas classes sem chamá-lo.
- Chame a função main(). A lógica do programa deve ser adicionada ao corpo desta função.
- Crie uma instância da classe fstream e dê a ela o nome my_file.
- Use a função open() para criar um novo arquivo chamado my_file.txt. O arquivo será aberto no modo in para leitura.
- Use uma instrução if para verificar se o arquivo não existe.
- Texto a ser impresso no console se o arquivo não for encontrado.
- Fim do corpo da instrução if.
- Use uma instrução else para indicar o que fazer se o arquivo for encontrado.
- Crie uma variável char chamada ch.
- Crie um loop while para iterar sobre o conteúdo do arquivo.
- Gravar/armazenar o conteúdo do arquivo na variável ch.
- Use uma condição if e uma função eof() que é o fim do arquivo, para garantir que o compilador continue lendo o arquivo se o fim não for alcançado.
- Use uma instrução break para interromper a leitura do arquivo quando o final for atingido.
- Imprima o conteúdo da variável ch no console.
- Fim do corpo while.
- Fim do corpo da instrução else.
- Chame a função close() para fechar o arquivo.
- O programa deve retornar o valor após a conclusão bem-sucedida.
- Fim do corpo da função main().
Resumo:
- Com a manipulação de arquivos, a saída de um programa pode ser enviada e armazenada em um arquivo.
- Várias operações podem ser aplicadas aos dados enquanto estão no arquivo.
- Um fluxo é uma abstração que representa um dispositivo onde as operações de entrada/saída são executadas.
- Um fluxo pode ser representado como destino ou origem de caracteres de comprimento indefinido.
- A biblioteca fstream fornece aos programadores C++ métodos para manipulação de arquivos.
- Para usar a biblioteca, você deve incluí-la em seu programa usando a diretiva de pré-processador #include.
Linguagem C
- C Manipulação de Arquivos
- Como inicializar a RAM do arquivo usando TEXTIO
- Manipulação de Exceções C++:Try, Catch, Throw Exemplo
- Como escrever comentários em programação C
- Java BufferedReader:Como Ler Arquivo em Java com Exemplo
- C - Arquivos de cabeçalho
- Arquivos e fluxos C++
- Manipulação de sinal C++
- Python - E/S de arquivos
- O que é Micrômetro? | Como você lê um micrômetro