Um programa C ++ para usar a classe IFStream deve começar da seguinte forma:
#incluirA primeira linha inclui o cabeçalho que tem a definição da classe ifstream. A segunda linha inclui o cabeçalho iostream que possui o objeto Cout para imprimir a saída para o terminal (console). A terceira linha é uma declaração, e não uma diretiva. O espaço para nome padrão é qualquer nome seguido de "std :;".
Este artigo explica o uso da classe IFStream do cabeçalho FStream, para lidar com a entrada de um arquivo no disco em um programa em execução. A entrada é caracteres em sequência que vão para um buffer na memória antes de chegar ao programa. Em outras palavras, este artigo explica como ler um arquivo de texto, do disco, em c++.
Criando um objeto ifstream
Para ler o conteúdo de um arquivo no disco, um objeto IFStream deve ser instanciado da classe IFStream. Os construtores comumente usados pelos programadores anglo-saxões (incluindo a Europa Ocidental) são:
Basic_ifstream ();O prefixo, "Basic_" pode ser omitido para as três sintaxes. O uso da primeira sintaxe aqui será ilustrado na próxima seção. Na segunda sintaxe, o primeiro argumento é um literal ou uma variedade de caracteres que terminam em '\ 0'. Esta string é um caminho de diretório e nome de arquivo, e.g. “DIR1/TXTFILE.txt ”, assumindo que o programa esteja no diretório doméstico/usuário. Para a segunda sintaxe, o primeiro argumento é o mesmo que o primeiro argumento da sintaxe anterior, mas é uma string da classe String (cabeçalho). Em ambas as sintaxes, o segundo argumento deve ser "ios_base :: in", onde "in" significa ler (entrada).
Ilustração
Uma declaração de construção para a segunda sintaxe é a seguinte:
ifstream ifs = ifstream ("DIR1/TXTFILE.txt ", ios_base :: in);O nome do arquivo cujo conteúdo deve ser lido é: “TXTFILE.TXT". Após esta declaração, o arquivo “txtfile.txt ”é considerado aberto no programa de corrida. Quando um arquivo é aberto, uma sequência de caracteres consecutivos que representam o arquivo está na memória para controle de buffer.
Um segmento de código de construção para a terceira sintaxe é:
string str = "DIR1/TXTFILE.TXT";Em qualquer situação, o IFS é o objeto ifstream do arquivo aberto. Com o tipo de string, não se esqueça de incluir a classe String (cabeçalho) no programa da seguinte forma:
#incluirAbrindo um arquivo
Diz -se que um arquivo foi aberto quando uma sequência de caracteres consecutivos do arquivo que representam o arquivo está na memória para controle de buffer. A segunda e a terceira sintaxe de construção acima abrem o arquivo para leitura, mas a primeira sintaxe não. Ou seja, a segunda e a terceira sintaxes fazem instanciação do objeto ifstream e a abertura do arquivo também, enquanto a primeira sintaxe faz apenas instanciação. O objeto IFS pode ser instanciado da classe IFStream usando a primeira sintaxe com a instrução:
ifstream ifs;Nesse caso, um objeto de arquivo IFS foi criado, mas o arquivo ainda não foi aberto. Para abrir o arquivo para leitura, a função de membro aberto da classe ifstream deve ser usado. Os métodos Open () sobrecarregados comumente usados pelos programadores anglo-saxões (incluindo a Europa Ocidental) são:
void aberto (const char* s, ios_base :: openmode mode = ios_base :: in);Observe que a declaração de construção “ifstream ifs;” não menciona nenhum arquivo no disco. E assim, o primeiro e o segundo argumentos desses funções de membro do Open () têm os mesmos significados que os da segunda e a terceira sintaxe de construção acima, respectivamente, respectivamente.
Ilustração
O uso da primeira função de membro Open () aqui (nesta seção) pode ser ilustrado da seguinte maneira:
ifstream ifs;O uso da segunda função de membro Open () aqui (nesta seção) pode ser ilustrado da seguinte forma:
ifstream ifs;A diferença nos dois segmentos de código são as maneiras pelas quais a string para o caminho e o nome do arquivo são construídos.
O arquivo foi aberto?
Diz -se que um arquivo foi aberto, quando uma sequência de caracteres consecutivos do arquivo que representam o arquivo está na memória para controle de buffer. E se o caminho e/ou o nome do arquivo estivessem errado? E se o arquivo não pudesse ser aberto porque o disco era ruim e seus setores não puderam ser lidos? É aconselhável verificar sempre se o arquivo foi aberto usando a sintaxe:
bool is_open () const;is_open () é uma função de membro da classe ifstream. Ele retorna verdadeiro, se o arquivo foi aberto com sucesso e false caso contrário. O segmento de código a seguir ilustra o uso desta função de membro:
ifstream ifs;A saída deve ser:
O arquivo é aberto.Fechando um arquivo
Um arquivo deve ser fechado após a abertura. A ação de encerramento interrompe o buffer na memória, liberando espaço de memória para outras atividades. Também quebra graciosamente a conexão que fez com o arquivo no disco. Ifstream tem a função de membro Close () para fechar um arquivo aberto. A sintaxe é:
vazio close ();O segmento de código a seguir ilustra seu uso:
ifstream ifs = ifstream ("DIR1/TXTFILE.txt ", ios_base :: in);A saída é:
O arquivo aberto foi fechado.O arquivo deve ser usado quando o programador tiver certeza de que foi aberto e depois fechado depois disso.
Lendo os personagens um por um
O IFStream tem uma função de membro cuja sintaxe é:
Basic_istreamQuando recebe o próximo personagem, ele o coloca na variável C e retorna o objeto do IFStream herdado de Basic_istream. O ponteiro interno de Ifstream, então aponta para o próximo personagem para a próxima leitura. Quando o final do arquivo é alcançado, o objeto retornado é convertido para falso.
O seguinte segmento de código lê todos os caracteres do arquivo um por um e envia cada um para o terminal (console):
char c;C tem que ser declarado primeiro. C é o argumento de get (), que é uma função de membro do objeto ifstream. A única declaração simples (cout << c;) of the while compound statement sends a copy of the character to the output.
Em vez de enviar os caracteres para a saída, eles podem ser enviados para um objeto String, formando uma string longa da seguinte maneira:
char c;Nesse caso, o cabeçalho da string (biblioteca) deve ser incluído no programa.
O programa a seguir lê todo o conteúdo de um arquivo e o exibe:
#incluirConclusão
A classe ifstream do cabeçalho FStream lida com a entrada de um arquivo de disco em um programa em execução. Para criar um objeto ifstream, use qualquer uma das sintaxes:
Basic_ifstream ();Se a primeira sintaxe for usada, o objeto ainda deve ser aberto, com qualquer uma das seguintes sintaxes da função de membro:
void aberto (const char* s, ios_base :: openmode mode = ios_base :: in);Para saber se um arquivo é aberto com sucesso, use a sintaxe da função do membro:
bool is_open () const;O objeto Ifstream deve ser fechado após o uso.
Para ler os personagens um por um, use em um loop de tempo, a sintaxe da função de membro:
Basic_istream