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 Regel mbstate_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