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.
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