Eingabestream-Memberfunktionen

Eingabestream Memberfunktionen sind für Datenträger Eingabe verwendet.Das Memberfunktion sind möglich:

  • Die geöffnete Funktion für die Eingabedatenströme

  • Die get- Funktion

  • Die Funktion getline

  • Die Funktion zum Lesen

  • Die seekg und tellg Funktionen

  • Die Funktion für Eingabedatenströme Nähe

Die geöffnete Funktion für die Eingabedatenströme

Wenn Sie einen Eingabedatei datenstrom (ifstream) verwenden, müssen Sie diesen Datenstrom mit einer bestimmten Datei auf einem Datenträger zugeordnet werden.Sie können dies im Konstruktor verwenden, oder Sie können die open-Funktion verwenden.In beiden Fällen sind die Argumente identisch.

Sie geben im Allgemeinen ios_base::openmode-Flag an, ob Sie die Datei öffnen, die mit einem Eingabestream zugeordnet ist ( ios::inist der Standardmodus.)Eine Liste der open_mode-Flags finden Sie unter Die geöffnete Funktion.Die Flags können mit der bitweisen OR-Operation kombiniert werden ( | Operator.)

So laden Sie eine Datei lesen, zunächst die fail-Memberfunktion zu bestimmen, ob sie vorhanden ist:

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

Die get- Funktion

Die unformatierte get-Memberfunktion funktioniert wie der Operator >> mit zwei Ausnahmen.Anfänglich enthält die get-Funktion Leerzeichen, während das Extraktionsprogramm Leerzeichen ausgeschlossen werden sollen, wenn das skipws-Flag festgelegt wird (Standardwert).Zweitens ist die Wahrscheinlichkeit geringer get-Funktion, einen gebundenen Ausgabedatenstrom (coutführen, z) geschrieben werden soll.

Eine Variante der get-Funktion gibt einen Puffer adresse und die maximale Anzahl der zu lesenden Zeichen an.Dies ist zum Einschränken der Anzahl von Zeichen, die auf eine bestimmte Variable gesendet werden, da dieses Beispiel dargestellt:

// 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(de-de,VS.110).gifEingabe

1234

f5tsy854.collapse_all(de-de,VS.110).gifBeispielausgabe

1234

Die Funktion getline

Die getline-Memberfunktion ist mit der get-Funktion ähnlich.Beide Funktionen ermöglichen ein drittes Argument, das das Endzeichen für die Eingabe angibt.Der Standardwert ist das Zeilenumbruchzeichen.Beide Funktionen ein Zeichen belegen für das erforderliche Endzeichen.Dennoch lässt get das Endzeichen im Stream und getline entfernt das Endzeichen.

Im folgenden Beispiel wird ein Endzeichen für den Eingabestream an:

// 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(de-de,VS.110).gifEingabe

test

Die Funktion zum Lesen

Die Lesen-Memberfunktion liest Bytes aus einer Datei auf einen angegebenen Bereich des Arbeitsspeichers.Das Längen - Argument bestimmt die Anzahl der gelesenen Bytes.Wenn Sie keine dieses Argument einschließen, wird das Lesen auf, wenn das physische Dateiende oder, im Falle einer Datei im Textmodus erreicht wird, wenn ein eingebettetes EOF Zeichen gelesen wird.

Dieses Beispiel liest einen binären Gehaltsabrechnungs Datensatz aus einer Datei in eine Struktur:

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

Das Programm wird davon ausgegangen, dass die Datensätze richtig formatiert werden, wie von der Struktur ohne das Beenden von Wagenrückkehr- oder Zeilenvorschubzeichen angegeben.

Die seekg und tellg Funktionen

Eingabedatei datenströme halten einen internen Zeiger auf die Position in der Datei, in der Daten als Nächstes gelesen werden soll.Sie legen diesen Zeiger mit der seekg-Funktion, wie hier gezeigt:

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

Um seekg zu verwenden, um RECORD-ausgerichtete Datenverwaltungssysteme zu implementieren, multiplizieren Sie die gewünschte Größe des Datensatzes mit fester Länge durch die Datensatznummer um die Byteposition im Verhältnis zum Ende der Datei zu erhalten, und verwenden Sie dann das get-Objekt um den Datensatz zu lesen.

Die tellg-Memberfunktion gibt die Position der aktuellen Datei zum Lesen.Dieser Wert ist vom Typ streampos, typedef , das definiert ist <iostream> .Im folgenden Beispiel wird eine Datei und zeigt die Meldungen an, die die Positionen von Leerraum anzeigen.

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

Die Funktion für Eingabedatenströme Nähe

Die Schließen-Memberfunktion enthält die Datenträgerdatei, die mit einer Eingabedatei datenstrom zugeordnet ist, und gibt das Dateihandle des Betriebssystems frei.Der Destruktor schließt die Datei ifstream , aber Sie können die Funktion Schließen verwenden, wenn Sie eine andere Datei für das gleiche Streamobjekt öffnen müssen.

Siehe auch

Referenz

Eingabestreams