Este artigo explica como ler um arquivo inteiro em uma matriz. O cabeçalho C ++ (biblioteca) FStream, tem a classe IFStream. A classe ifstream tem () funções de membros sobrecarregadas. Duas dessas funções de membro sobrecarregadas podem ser usadas para ler o arquivo inteiro em uma matriz. Um programa para essa leitura deve começar com:
#incluirAs duas primeiras linhas são diretivas, não declarações. O primeiro inclui a biblioteca FStream para as funções get (). O segundo inclui a biblioteca iostream para impressão no terminal (console) e para receber caracteres do teclado. A terceira linha é uma declaração. Ele insiste que qualquer nome não precedido por "std ::" é do espaço de nome padrão.
Há um pequeno problema nas funções get (), o comprimento da matriz deve ser estimado, para ser pelo menos um personagem a mais do que o número de caracteres no arquivo. A idéia é ter '\ 0' incluído logo após o último personagem de leitura na matriz, formar uma longa sequência.
Se o comprimento da matriz não puder ser estimado como tal, todo o arquivo deve ser lido em algum outro objeto, como um objeto de string (da classe String). Como o objetivo deste artigo é explicar como ler uma matriz, o tamanho da matriz deve ser estimado.
Para o restante deste artigo, supõe -se que o nome do arquivo, cujo conteúdo seja lido, é txtfile.txt, no diretório, dir1, no diretório doméstico/usuário.
Conteúdo do artigo
- Lendo todo o arquivo de arquivo por caractere
- Lendo todo o arquivo com uma função de membro
- Conclusão
Lendo todo o arquivo de arquivo por caractere
A sintaxe da função Get () Get (), para isso, é: é:
Basic_istreamUm segmento de código do programa para ler o próximo caractere no arquivo é:
char c;A primeira declaração declara a variável, C receberá cada um dos caracteres. A segunda declaração declara a matriz que receberá todos os personagens, um por um. A terceira linha declara um índice para a matriz que começa de zero para abordar todos os elementos da matriz, que receberão um personagem. Com essa abordagem, '\ 0' pode ser adicionado após o último caráter do arquivo ter sido incluído na matriz.
Os parênteses do loop de enquanto têm,
ifs.obtenha (c)onde ifs é o nome do objeto ifstream. O próximo personagem do arquivo é obtido pela função GET do membro e atribuído a C. Depois disso, o ponteiro interno do objeto IFStream apontaria para o personagem depois que ele lia. Quando o final do arquivo é alcançado, a expressão: “Ifs.get (c) "se torna falso em vez de verdadeiro e, portanto, o loop do enquanto termina.
O programa a seguir, lerá todos os caracteres de um arquivo e imprimirá todo o conteúdo do terminal:
#incluirIfStream como codificado, abre o arquivo para leitura.
Lendo todo o arquivo com uma função de membro
A função de membro get () get () para ler o arquivo inteiro, sem o loop while, é:
Basic_istreamEle ainda lê o arquivo inteiro caractere por caracteres, mas esse não é mais o negócio do programador C ++. Além disso, essa função adiciona o caractere nulo, '\ 0' em nome do programador, assumindo que n é pelo menos um caractere mais longo que o conteúdo do arquivo.
O primeiro argumento desta função Get () sobrecarregada é a matriz com as mesmas restrições (incluindo estimativa) que a matriz acima para receber todos os caracteres do arquivo. O segundo argumento, n, do tipo streamsize, é uma estimativa do número de caracteres no arquivo. É aconselhável tornar o tamanho da matriz e n, o mesmo. Não há necessidade de um loop de tempo com esta função de membro.
Agora, uma linha em um arquivo de texto termina com a sequência de fuga, '\ n'. Se o terceiro argumento for '\ n', apenas a primeira linha do arquivo seria lida. Portanto, a função deve ser enganada com qualquer personagem que provavelmente não seja encontrado no conteúdo do arquivo. Um bom candidato para o terceiro argumento é '\ 0'. Com essa função de membro sobrecarregada, o programador precisa ter algum conhecimento dos personagens possíveis no arquivo para não usar um personagem que faça parte do conteúdo do arquivo.
O programa a seguir lerá todos os caracteres de um arquivo com uma instrução e imprimirá todo o conteúdo do terminal:
#incluirConclusão
Um arquivo inteiro pode ser lido em uma matriz. Antes de tudo, precisa da classe C ++ IFStream da biblioteca FSTREAM. O arquivo deve ser aberto para leitura. Para ler todos os personagens (bytes) de um arquivo (um por um) na matriz, use a função do membro ifstream,
Basic_istreamcomo a condição em um loop de tempo. Para ler todos os caracteres (bytes) de um arquivo, na matriz com uma função de membro do iFStream sem o loop while, a função do membro IFStream deve ser:
Basic_istreamNão se esqueça de enganar a função no terceiro argumento. Com esta função, o programador precisa ter algum conhecimento dos personagens possíveis no arquivo.