Sdílet prostřednictvím


Vstupní proud členské funkce

Vstupní proud členské funkce se používají pro vstup na disku.Funkce členů zahrnují:

  • Funkce Otevřít proudům vstup

  • Funkci get

  • Funkce getline

  • Funkci čtení

  • Funkce seekg a tellg

  • Funkce Zavřít proudům vstup

Funkce Otevřít proudům vstup

Pokud používáte vstupní soubor datového proudu (ifstream), je tento proud přidružit konkrétního disku soubor.To lze provést v konstruktoru nebo můžete použít otevřete funkce.V obou případech argumenty jsou stejné.

Obvykle určují ios_base::openmode příznak při otevření souboru přidružen vstupní proud (výchozí režim je ios::in).Seznam open_mode příznaky, viz funkci Otevřít.Příznaky lze kombinovat s bitový operátor OR operátor (|).

Chcete-li číst soubor nejprve použít selhání členské funkce určit, zda existuje:

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

Funkci get

Neformátovaný získat členské funkce pracuje stejně jako >> operátor se dvěma výjimkami.První, získat funkce obsahuje prázdné znaky, vzhledem k tomu, že extrakci vylučuje prázdné místo po skipws je nastaven příznak (výchozí).Druhý, získat funkce je méně může způsobit vázanou výstupního proudu (cout, například) zapsány.

Změnu získat funkce určuje adresu vyrovnávací paměti a maximální počet znaků pro čtení.To je užitečné pro omezení počtu znaků odeslaných do určité proměnné, jak ukazuje tento příklad:

// 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(cs-cz,VS.110).gifVstup

1234

f5tsy854.collapse_all(cs-cz,VS.110).gifVzorový výstup

1234

Funkce getline

Getline členské funkce je podobná získat funkce.Obě funkce umožňují třetí argument, který určuje ukončující znak pro vstup.Výchozí hodnota je znak nového řádku.Obě funkce rezervovat pro požadované znaky ukončující jeden znak.Však získat znak ukončující ponechá v proudu a getline odebere znak ukončující.

Následující příklad určuje ukončující znaku pro vstupní proud:

// 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(cs-cz,VS.110).gifVstup

test

Funkci čtení

Číst členské funkce načte bajtů ze souboru do určené oblasti paměti.Délka argumentu určuje počet bajtů přečtených.Pokud tento argument nezadáte, čtení zastaví, jakmile je dosaženo fyzického konce souboru nebo z režimu textu souboru při vloženými EOF je čtení znaků.

V tomto příkladu načte binární záznamu ze souboru mezd do struktury:

#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;
   }
}

Program předpokládá formátování datových záznamů přesně podle struktury s ukončující znaky carriage return nebo konce řádku.

Funkce seekg a tellg

Vstupní soubor proudy zachovat interní ukazatel na místo v souboru, kde se data číst dále.Nastavit tento ukazatel se seekg funkci, jak je znázorněno zde:

#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;
   }
}

Použití seekg implementaci systémů orientovaných na záznam dat, vynásobte velikost záznamu pevné délky číslo záznamu získání pozice bajtu vzhledem ke konci souboru a potom použít získat objektu čtení záznamu.

tellg Členské funkce vrací aktuální pozici soubor pro čtení.Tato hodnota je typu streampos, typedef definované v <iostream>.Následující příklad načte soubor a zobrazí pozic mezer.

#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;
   }
}

Funkce Zavřít proudům vstup

Zavřít členské funkce disku soubor přidružený k datovému proudu vstupní soubor zavře a uvolňuje popisovač souboru operačního systému.Ifstream destructor můžete soubor zavře, ale můžete použít Zavřít fungovat, pokud chcete otevřít další soubor pro stejný objekt datového proudu.

Viz také

Referenční dokumentace

Vstupní proudy