C++ Manipulação de arquivos: como abrir, gravar, ler e 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 operações de entrada/saída são executadas. Você pode representar um fluxo como um destino ou uma fonte de caracteres de comprimento indefinido. Isso será determinado pelo uso deles. C++ fornece uma biblioteca que vem com métodos para manipulação de arquivos. Vamos discutir isso.

A biblioteca fstream

A biblioteca fstream fornece C++ programadores com três classes para trabalhar com arquivos. Essas aulas incluem:

  • de corrente– 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.
  • stream– Esta classe geralmente representa um fluxo de arquivos. Ele vem com recursos ofstream/ifstream. Isso significa que ele é capaz de criar arquivos, gravar arquivos e ler arquivos de dados.

A imagem a seguir facilita a compreensão:

biblioteca fstream
biblioteca fstream

Para usar as classes acima da biblioteca fstream, você deve incluí-las 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, possuem a função open() definida neles. A função assume 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:
Valor Descrição
ios:: aplicativo O modo Anexar. A saída enviada para o arquivo é anexada a ele.
ios::comeu Ele abre o arquivo para saída e move o controle de leitura e gravação para o final do arquivo.
ios::no Ele abre o arquivo para leitura.
ios::fora Ele abre o arquivo para gravação.
ios::trunc Se existir um arquivo, os elementos do arquivo deverão ser truncados antes de sua abertura.

É possível usar dois modos ao mesmo tempo. Você os combina usando o | (OU) operador.

1 exemplo:

#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:

Abrir Arquivos

Aqui está uma captura de tela do código:

Abrir Arquivos

Explicação do código:

  1. Inclua o arquivo de cabeçalho iostream no programa para usar suas funções.
  2. Inclua o arquivo de cabeçalho fstream no programa para usar suas classes.
  3. Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
  4. Chame a função main(). A lógica do programa deve estar dentro do seu corpo.
  5. Crie um objeto da classe fstream e dê a ele o nome my_file.
  6. Aplique a função open() no objeto acima para criar um novo arquivo. O modo out nos permite escrever no arquivo.
  7. Use a instrução if para verificar se a criação do arquivo falhou.
  8. Mensagem para imprimir no console caso o arquivo não tenha sido criado.
  9. Fim do corpo da instrução if.
  10. Use uma instrução else para indicar o que fazer se o arquivo for criado.
  11. Mensagem para imprimir no console se o arquivo foi criado.
  12. Aplique a função close() no objeto para fechar o arquivo.
  13. Fim do corpo da instrução else.
  14. O programa deve retornar um valor se for concluído com sucesso.
  15. Fim do corpo da função main().

Como fechar arquivos

Uma vez C++ programa termina, ele automaticamente

  • libera os riachos
  • libera a memória alocada
  • fecha 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 assume esta sintaxe:

void close();

Como escrever em arquivos

Você pode gravar no arquivo diretamente do seu C++ programa. Você usa o operador de inserção de fluxo (<<) para isso. O texto a ser escrito no arquivo deve ser colocado entre aspas duplas.

Deixe-nos demonstrar isso.

2 exemplo:

#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:

Como escrever em arquivos

Aqui está uma captura de tela do código:

Como escrever em arquivos

Explicação do código:

  1. Inclua o arquivo de cabeçalho iostream no programa para usar suas funções.
  2. Inclua o arquivo de cabeçalho fstream no programa para usar suas classes.
  3. Inclua o namespace std no programa para usar suas classes sem chamá-lo.
  4. Chame a função main(). A lógica do programa deve ser adicionada ao corpo desta função.
  5. Crie uma instância da classe fstream e dê a ela o nome my_file.
  6. Use a função open() para criar um novo arquivo chamado my_file.txt. O arquivo será aberto no modo out para gravação nele.
  7. Use uma instrução if para verificar se o arquivo não foi aberto.
  8. Texto a ser impresso no console se o arquivo não for aberto.
  9. Fim do corpo da instrução if.
  10. Use uma instrução else para indicar o que fazer se o arquivo for criado.
  11. Texto a ser impresso no console se o arquivo foi criado.
  12. Escreva algum texto no arquivo criado.
  13. Use a função close() para fechar o arquivo.
  14. Fim do corpo da instrução else.
  15. O programa deve retornar o valor após a conclusão bem-sucedida.
  16. Fim do corpo da função main().

Como ler arquivos

Você pode ler informações de arquivos em seu C++ programa. 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.

3 exemplo:

#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:

Ler de arquivos

Arquivo inexistente

Aqui está uma captura de tela do código:

Ler de arquivos

Explicação do código:

  1. Inclua o arquivo de cabeçalho iostream no programa para usar suas funções.
  2. Inclua o arquivo de cabeçalho fstream no programa para usar suas classes.
  3. Inclua o namespace std no programa para usar suas classes sem chamá-lo.
  4. Chame a função main(). A lógica do programa deve ser adicionada ao corpo desta função.
  5. Crie uma instância da classe fstream e dê a ela o nome my_file.
  6. Use a função open() para criar um novo arquivo chamado my_file.txt. O arquivo será aberto no modo in para leitura dele.
  7. Use uma instrução if para verificar se o arquivo não existe.
  8. Texto a ser impresso no console se o arquivo não for encontrado.
  9. Fim do corpo da instrução if.
  10. Use uma instrução else para indicar o que fazer se o arquivo for encontrado.
  11. Crie uma variável de caractere chamado cap.
  12. Crie uma loop while para iterar sobre o conteúdo do arquivo.
  13. Escreva/armazene o conteúdo do arquivo na variável ch.
  14. Use uma condição if e uma função eof() que é o final do arquivo, para garantir que o compilador continue lendo o arquivo se o final não for atingido.
  15. Use uma instrução break para interromper a leitura do arquivo quando o final for alcançado.
  16. Imprima o conteúdo da variável ch no console.
  17. Fim do corpo while.
  18. Fim do corpo da instrução else.
  19. Chame a função close() para fechar o arquivo.
  20. O programa deve retornar o valor após a conclusão bem-sucedida.
  21. 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 então ser aplicadas aos dados enquanto estão no arquivo.
  • Um stream é 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 C++ programadores com 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.