Em programação C/C++ e qualquer outra linguagem de programação, em diversas situações precisamos ler arquivos externos. Seja para obter dados, fazer parser e entre outras funcionalidades.
Nesse artigo veremos 4 Formas de Ler Arquivo com C++ . Entre essas formas teremos:
.txt
;Vou mostrar o código exemplo e fica à sua tarefa modificar conforme sua necessidade.
Vamos lá a lista!
Como foi dito no início do artigo, esse é um estilo clássico, essa foi a forma que mais usei em minha vida. A primeira vez que eu postei esse código aqui no blog foi em um artigo publicado em 30 de Outubro de 2014, ou seja, faz tempo! :) Mas, como C e C++ são linguagens estáveis, ela funciona tão bem como antigamente.
Ele irá ler todas as linhas e mostrar na tela. Essa forma geralmente é usada para fins gerais, por exemplo, um comando similar ao cat
.
O arquivo é definido em tempo de execução, passado como argumento: argv[1]
.
Nessa forma escolhi também usar Orientação à Objetos, pois fica mais próximo da forma real de como geralmente a usamos. Para esse exemplo, use um arquivo.config
similar à esse abaixo:
Ou seja, é um arquivo que há separado dados que serão inseridos em um game qualquer, exemplos: Título, Largura, Altura, Frames por segundo e uma checagem para algum tipo de validação.
Note que o código abaixo, lê cada dado separado por membro
da nossa classe. Essa é a forma mais interessante quando o assunto são dados específicos externos.
Os dados também serão exibidos separadamente conforme suas funções-membro. O arquivo também é definido em tempo de execução, passado como argumento: argv[1]
.
Exemplo:
./a.out arquivo.config
Geralmente linguagens de programação possuem esse estilo nos seus códigos-fonte. Nesse exemplo vamos tokenizar todos os caracteres de um arquivo exemplo JavaScript.
Algumas observações para esse código são:
content.data()
, há um bug no clang++
, ou seja, só vai funcionar no GCC/G++..js
.Aqui um exemplo de um código básico JavaScript que você pode usar:
Código C++ que irá ler o arquivo .js
:
Esse estilo posso dizer que tem 100% de minha autoria. Na verdade, estou usando ele para uma linguagem de programação que estou criando, por enquanto ainda é segredo! 😎
Foi a forma que encontrei de tokenizar também caracteres acentuados, diferentemente do outro exemplo logo acima. Ele não recebe argumento via linha de comando, mas você pode alterar.
Se quiser compilar e testar, crie um arquivo de nome file.ter
e coloque esse exemplo(spoiler) dentro dele:
vim file.ter
Esse é o código que eu criei, um detalhe que talvez você ache estranho é que a função main
está de uma forma mais moderna, ou seja, algumas versões antigas do C++ podem não reconhecê-la, se esse for o caso, altere para o modo tradicional.
Se você não criar o arquivo
file.ter
, nada será exibido!
Por hoje é só, espero que tenham gostado e temos um compromisso marcado no próximo artigo!
Abraços!