Compartilhar via


Funções de membro de fluxo entrada

Funções de membro de fluxo de entrada são usadas para entrada de disco.As funções de membro incluem:

  • A função open para fluxos de entrada

  • O função de get

  • A função de getline

  • A função de leitura

  • As funções seekg e tellg

  • A função Fechar para fluxos de entrada

A função open para fluxos de entrada

Se você estiver usando um fluxo de arquivo de entrada (ifstream), você deve associar esse fluxo com um arquivo de disco específico.Você pode fazer isso no construtor, ou você pode usar o Abrir função.Em ambos os casos, os argumentos são os mesmos.

Você geralmente Especifica uma ios_base::openmode sinalizar quando você abre o arquivo associado a um fluxo de entrada (o modo padrão é ios::in).Para obter uma lista de open_mode sinalizadores, consulte A função abrir.Os sinalizadores podem ser combinados com o bit a bit ou operador (|).

Para ler um arquivo, primeiro use o Falha a função de membro para determinar se ele existe:

istream ifile( "FILENAME" );
if ( ifile.fail() )
// The file does not exist ...

O função de get

O não formatado obter a função de membro funciona como o >> operador com duas exceções.Primeiro, o obter função inclui caracteres de espaço em branco, enquanto o extrator exclui o espaço em branco quando o skipws sinalizador estiver definido (padrão).Segundo, o obter função é menos probabilidade de causar um fluxo de saída empatados (cout, por exemplo) a serem liberadas.

Uma variação da obter função especifica um endereço de buffer e o número máximo de caracteres a serem lidos.Isso é útil para limitar o número de caracteres enviada para uma variável específica, como mostra este exemplo:

// ioo_get_function.cpp
// compile with: /EHsc
// Type up to 24 characters and a terminating character. 
// Any remaining characters can be extracted later.
#include <iostream>
using namespace std;

int main()
{
   char line[25];
   cout << " Type a line terminated by carriage return\n>";
   cin.get( line, 25 );
   cout << line << endl;
}

f5tsy854.collapse_all(pt-br,VS.110).gifEntrada

1234

f5tsy854.collapse_all(pt-br,VS.110).gifSaída de exemplo

1234

A função de getline

O getline a função de membro é semelhante a obter função.Ambas as funções permitem que um terceiro argumento que especifica o caractere de terminação de entrada.O valor padrão é o caractere de nova linha.Ambas as funções reservam um caractere para o caractere de terminação necessário.No entanto, obter deixa o caractere de terminação no fluxo e getline remove o caractere de terminação.

O exemplo a seguir especifica um caractere de terminação para o fluxo de entrada:

// getline_func.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main( )
{
   char line[100];
   cout << " Type a line terminated by 't'" << endl;
   cin.getline( line, 100, 't' );
   cout << line;
}

f5tsy854.collapse_all(pt-br,VS.110).gifEntrada

test

A função de leitura

O Leia a função de membro lê os bytes de um arquivo para uma área especificada de memória.O argumento length determina o número de bytes lidos.Se você não incluir esse argumento, leitura pára ao alcançar o final do arquivo físico ou, no caso de um arquivo de modo de texto, quando um incorporado EOF caractere for lido.

Este exemplo lê um registro binário de um arquivo de folha de pagamento em uma estrutura:

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
   struct
   {
      double salary;
      char name[23];
   } employee;

   ifstream is( "payroll" );
   if( is ) {  // ios::operator void*()
      is.read( (char *) &employee, sizeof( employee ) );
      cout << employee.name << ' ' << employee.salary << endl;
   }
   else {
      cout << "ERROR: Cannot open file 'payroll'." << endl;
   }
}

O programa assume a que os registros de dados são formatados exatamente conforme especificado pela estrutura sem caracteres de retorno de carro ou de avanço de linha de terminação.

As funções seekg e tellg

Fluxos de arquivo de entrada mantêm um ponteiro interno para a posição no arquivo onde os dados estão a ser lido em seguida.Você definir esse ponteiro com o seekg funcionam, como mostrado aqui:

#include <iostream>
#include <fstream>
using namespace std;

int main( )
{
   char ch;

   ifstream tfile( "payroll" );
   if( tfile ) {
      tfile.seekg( 8 );        // Seek 8 bytes in (past salary)
      while ( tfile.good() ) { // EOF or failure stops the reading
         tfile.get( ch );
         if( !ch ) break;      // quit on null
         cout << ch;
      }
   }
   else {
      cout << "ERROR: Cannot open file 'payroll'." << endl;
   }
}

Para usar seekg para implementar sistemas de gerenciamento de dados orientados a registros, multiplique o tamanho de registro de comprimento fixo, o número de registro para obter a posição de byte em relação ao final do arquivo e, em seguida, usar o obter o objeto para ler o registro.

O tellg a função de membro retorna a posição atual do arquivo para leitura.Esse valor é do tipo streampos, um typedef definido em <iostream>.O exemplo a seguir lê um arquivo e exibirá mensagens mostrando as posições de espaços.

#include <fstream>
#include <iostream>
using namespace std;

int main( )
{
   char ch;
   ifstream tfile( "payroll" );
   if( tfile ) {
       while ( tfile.good( ) ) {
          streampos here = tfile.tellg();
          tfile.get( ch );
          if ( ch == ' ' )
             cout << "\nPosition " << here << " is a space";
       }
   }
   else {
      cout << "ERROR: Cannot open file 'payroll'." << endl;
   }
}

A função Fechar para fluxos de entrada

O Fechar a função de membro fecha o arquivo de disco associado a um fluxo de arquivo de entrada e libera o identificador de arquivo do sistema operacional.O ifstream destruidor fecha o arquivo para você, mas você pode usar o Fechar funcionar se você precisar abrir outro arquivo para o mesmo objeto de fluxo.

Consulte também

Referência

Fluxos de entrada