fpos-Klasse
Die Klassenvorlage beschreibt ein Objekt, das alle informationen speichern kann, die zum Wiederherstellen eines beliebigen Dateipositionsindikators innerhalb eines beliebigen Datenstroms erforderlich sind. Ein Objekt der Klasse fpos<St> speichert effektiv mindestens zwei Memberobjekte:
Ein Byteoffset vom Typ streamoff
Ein Konvertierungszustand für die Verwendung durch ein Objekt der Klasse basic_filebuf vom Typ
St
, in der Regelmbstate_t
.
Es kann auch eine beliebige Dateiposition speichern, die von einem Objekt der Klasse basic_filebuf und vom Typ fpos_t
verwendet werden kann. In einer Umgebung mit begrenzter Dateigröße werden streamoff
und fpos_t
jedoch manchmal synonym verwendet. In einer Umgebung ohne Streams, mit zustandsabhängiger Codierung, wird mbstate_t
möglicherweise nicht verwendet. Daher kann die Anzahl der gespeicherten Memberobjekte variieren.
Syntax
template <class Statetype>
class fpos
Parameter
Statetype
Zustandsinformationen.
Konstruktoren
Konstruktor | Beschreibung |
---|---|
fpos | Erstellt ein Objekt, das Informationen zu einer Position (Offset) in einem Stream enthält. |
Memberfunktionen
Memberfunktion | Beschreibung |
---|---|
seekpos | Wird nur intern von der C++-Standardbibliothek verwendet. Rufen Sie diese Methode nicht aus Ihrem Code auf. |
state | Legt den Konvertierungszustand fest oder gibt ihn zurück. |
Operatoren
Operator | Beschreibung |
---|---|
operator!= | Testet Dateipositionsindikatoren auf Ungleichheit. |
operator+ | Erhöht einen Dateipositionsindikator. |
operator+= | Erhöht einen Dateipositionsindikator. |
operator- | Verringert einen Dateipositionsindikator. |
operator-= | Verringert einen Dateipositionsindikator. |
operator== | Testet Dateipositionsindikatoren auf Gleichheit. |
operator streamoff | Wandelt ein Objekt vom Typ fpos in ein Objekt vom Typ streamoff um. |
Anforderungen
Header:<ios>
Namespace: std
fpos::fpos
Erstellt ein Objekt, das Informationen zu einer Position (Offset) in einem Stream enthält.
fpos(streamoff _Off = 0);
fpos(Statetype _State, fpos_t _Filepos);
Parameter
_Aus
Der Offset in den Stream
_Zustand
Der Startzustand des fpos
-Objekts
_Filepos
Der Offset in den Stream
Hinweise
Der erste Konstruktor speichert den Offset _Off relativ zum Anfang der Datei und im anfänglichen Konvertierungszustand. Wenn _Off -1 ist, stellt das resultierende Objekt eine ungültige Datenstromposition dar.
Der zweite Konstruktor speichert einen Nulloffset und das Objekt _State.
fpos::operator!=
Testet Dateipositionsindikatoren auf Ungleichheit.
bool operator!=(const fpos<Statetype>& right) const;
Parameter
right
Der Dateipositionsindikator, gegen den verglichen werden soll
Rückgabewert
true
wenn die Dateipositionsindikatoren nicht gleich sind, andernfalls false
.
Hinweise
Die Memberfunktion gibt !(*this == right)
zurück.
Beispiel
// fpos_op_neq.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>
int main( )
{
using namespace std;
fpos<int> pos1, pos2;
ifstream file;
char c;
// Compare two fpos object
if ( pos1 != pos2 )
cout << "File position pos1 and pos2 are not equal" << endl;
else
cout << "File position pos1 and pos2 are equal" << endl;
file.open( "fpos_op_neq.txt" );
file.seekg( 0 ); // Goes to a zero-based position in the file
pos1 = file.tellg( );
file.get( c);
cout << c << endl;
// Increment pos1
pos1 += 1;
file.get( c );
cout << c << endl;
pos1 = file.tellg( ) - fpos<int>( 2);
file.seekg( pos1 );
file.get( c );
cout << c << endl;
// Increment pos1
pos1 = pos1 + fpos<int>( 1 );
file.get(c);
cout << c << endl;
pos1 -= fpos<int>( 2 );
file.seekg( pos1 );
file.get( c );
cout << c << endl;
file.close( );
}
fpos::operator+
Erhöht einen Dateipositionsindikator.
fpos<Statetype> operator+(streamoff _Off) const;
Parameter
_Aus
Der Offset, um den der Dateipositionsindikator erhöht werden soll
Rückgabewert
Die Position in der Datei
Hinweise
Die Memberfunktion gibt fpos(*this) +=_Off
zurück.
Beispiel
Ein Beispiel für die Verwendung von operator+
finden Sie unter operator!=.
fpos::operator+=
Erhöht einen Dateipositionsindikator.
fpos<Statetype>& operator+=(streamoff _Off);
Parameter
_Aus
Der Offset, um den der Dateipositionsindikator erhöht werden soll
Rückgabewert
Die Position in der Datei
Hinweise
Die Memberfunktion fügt _Off zum gespeicherten Offsetelementobjekt hinzu und gibt dann zurück *this
. Beim Arbeiten mit Dateien ist das Ergebnis nur für binäre Datenströme gültig, die keine zustandsabhängige Codierung aufweisen.
Beispiel
Ein Beispiel für die Verwendung von operator+=
finden Sie unter operator!=.
fpos::operator-
Verringert einen Dateipositionsindikator.
streamoff operator-(const fpos<Statetype>& right) const;
fpos<Statetype> operator-(streamoff _Off) const;
Parameter
right
Dateiposition
_Aus
Streamoffset
Rückgabewert
Die erste Memberfunktion gibt (streamoff)*this - (streamoff) right
zurück. Die zweite Memberfunktion gibt fpos(*this) -= _Off
zurück.
Beispiel
Ein Beispiel für die Verwendung von operator-
finden Sie unter operator!=.
fpos::operator-=
Verringert einen Dateipositionsindikator.
fpos<Statetype>& operator-=(streamoff _Off);
Parameter
_Aus
Streamoffset
Rückgabewert
Die Memberfunktion gibt fpos(*this) -= _Off
zurück.
Hinweise
Beim Arbeiten mit Dateien ist das Ergebnis nur für binäre Datenströme gültig, die keine zustandsabhängige Codierung aufweisen.
Beispiel
Ein Beispiel für die Verwendung von operator-=
finden Sie unter operator!=.
fpos::operator==
Testet Dateipositionsindikatoren auf Gleichheit.
bool operator==(const fpos<Statetype>& right) const;
Parameter
right
Der Dateipositionsindikator, gegen den verglichen werden soll
Rückgabewert
true
wenn die Dateipositionsindikatoren gleich sind; andernfalls false
.
Hinweise
Die Memberfunktion gibt (streamoff)*this == (streamoff)right
zurück.
Beispiel
Ein Beispiel für die Verwendung von operator+=
finden Sie unter operator!=.
fpos::operator streamoff
Wandelt ein Objekt vom Typ fpos
in ein Objekt vom Typ streamoff
um
operator streamoff() const;
Hinweise
Die Memberfunktion gibt das gespeicherte Offset-Memberobjekt und alle zusätzlichen Offsets zurück, die als Teil des fpos_t
-Memberobjekts gespeichert sind.
Beispiel
// fpos_op_streampos.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
streamoff s;
ofstream file( "rdbuf.txt");
fpos<mbstate_t> f = file.tellp( );
// Is equivalent to ..
// streampos f = file.tellp( );
s = f;
cout << s << endl;
}
0
fpos::seekpos
Diese Methode wird nur intern von der C++-Standardbibliothek verwendet. Rufen Sie diese Methode nicht aus Ihrem Code auf.
fpos_t seekpos() const;
fpos::state
Legt den Konvertierungszustand fest oder gibt ihn zurück.
Statetype state() const;
void state(Statetype _State);
Parameter
_Zustand
Der neue Konvertierungsstatus
Rückgabewert
Der Konvertierungsstatus
Hinweise
Die erste Memberfunktion gibt den im St
Memberobjekt gespeicherten Wert zurück. Die zweite Memberfunktion speichert _State im St
Memberobjekt.
Beispiel
// fpos_state.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>
int main() {
using namespace std;
streamoff s;
ifstream file( "fpos_state.txt" );
fpos<mbstate_t> f = file.tellg( );
char ch;
while ( !file.eof( ) )
file.get( ch );
s = f;
cout << f.state( ) << endl;
f.state( 9 );
cout << f.state( ) << endl;
}
Siehe auch
Threadsicherheit in der C++-Standardbibliothek
iostream-Programmierung
iostreams-Konventionen