Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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;
}
Eingabe
1234
Beispielausgabe
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;
}
Eingabe
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.