Udostępnij za pośrednictwem


fpos — Klasa

Szablon klasy opisuje obiekt, który może przechowywać wszystkie informacje potrzebne do przywrócenia dowolnego wskaźnika położenia pliku w dowolnym strumieniu. Obiekt klasy fpos<St> skutecznie przechowuje co najmniej dwa obiekty składowe:

  • Przesunięcie bajtu typu streamoff.

  • Stan konwersji, używany przez obiekt klasy basic_filebuf, typu St, zazwyczaj mbstate_t.

Może również przechowywać dowolną pozycję pliku do użycia przez obiekt klasy basic_filebuf typu fpos_t. Jednak w przypadku środowiska o ograniczonym rozmiarze streamoff pliku i fpos_t czasami mogą być używane zamiennie. W przypadku środowiska bez strumieni, które mają kodowanie zależne od stanu, mbstate_t może być rzeczywiście nieużywane. W związku z tym liczba przechowywanych obiektów członkowskich może się różnić.

Składnia

template <class Statetype>
class fpos

Parametry

Typ stanu
Informacje o stanie.

Konstruktory

Konstruktor opis
fpos Utwórz obiekt zawierający informacje o pozycji (przesunięcie) w strumieniu.

Funkcje składowe

Funkcja składowa opis
seekpos Używana wewnętrznie tylko przez bibliotekę standardową języka C++. Nie należy wywoływać tej metody z kodu.
state Ustawia lub zwraca stan konwersji.

Operatory

Operator opis
operator!= Testuje wskaźniki położenia pliku pod kątem nierówności.
operator+ Zwiększa wskaźnik położenia pliku.
operator+= Zwiększa wskaźnik położenia pliku.
operator- Dekrementuje wskaźnik położenia pliku.
operator-= Dekrementuje wskaźnik położenia pliku.
operator== Testuje wskaźniki położenia pliku pod kątem równości.
operator streamoff Rzutuje obiekt typu fpos na obiekt typu streamoff.

Wymagania

Nagłówek:<ios>

Przestrzeń nazw: std

fpos::fpos

Utwórz obiekt zawierający informacje o pozycji (przesunięcie) w strumieniu.

fpos(streamoff _Off = 0);

fpos(Statetype _State, fpos_t _Filepos);

Parametry

_Od
Przesunięcie do strumienia.

_Stan
Stan fpos początkowy obiektu.

_Filepos
Przesunięcie do strumienia.

Uwagi

Pierwszy konstruktor przechowuje _Off przesunięcia względem początku pliku i w stanie początkowej konwersji. Jeśli _Off wynosi -1, wynikowy obiekt reprezentuje nieprawidłową pozycję strumienia.

Drugi konstruktor przechowuje przesunięcie zerowe, a obiekt _State.

fpos::operator!=

Testuje wskaźniki położenia pliku pod kątem nierówności.

bool operator!=(const fpos<Statetype>& right) const;

Parametry

Prawy
Wskaźnik położenia pliku, z którym ma być porównywany.

Wartość zwracana

true jeśli wskaźniki położenia pliku nie są równe, w przeciwnym razie false.

Uwagi

Funkcja składowa zwraca wartość !(*this == right).

Przykład

// 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+

Zwiększa wskaźnik położenia pliku.

fpos<Statetype> operator+(streamoff _Off) const;

Parametry

_Od
Przesunięcie, za pomocą którego chcesz zwiększać wskaźnik położenia pliku.

Wartość zwracana

Pozycja w pliku.

Uwagi

Funkcja składowa zwraca wartość fpos(*this) +=_Off.

Przykład

Zobacz operator!= przykład użycia elementu operator+.

fpos::operator+=

Zwiększa wskaźnik położenia pliku.

fpos<Statetype>& operator+=(streamoff _Off);

Parametry

_Od
Przesunięcie, za pomocą którego chcesz zwiększać wskaźnik położenia pliku.

Wartość zwracana

Pozycja w pliku.

Uwagi

Funkcja składowa dodaje _Off do przechowywanego obiektu składowego przesunięcia, a następnie zwraca wartość *this. Podczas pracy z plikami wynik jest prawidłowy tylko dla strumieni binarnych, które nie mają kodowania zależnego od stanu.

Przykład

Zobacz operator!= przykład użycia elementu operator+=.

fpos::operator-

Dekrementuje wskaźnik położenia pliku.

streamoff operator-(const fpos<Statetype>& right) const;

fpos<Statetype> operator-(streamoff _Off) const;

Parametry

Prawy
Położenie pliku.

_Od
Przesunięcie strumienia.

Wartość zwracana

Pierwsza funkcja składowa zwraca wartość (streamoff)*this - (streamoff) right. Druga funkcja składowa zwraca wartość fpos(*this) -= _Off.

Przykład

Zobacz operator!= przykład użycia elementu operator-.

fpos::operator-=

Dekrementuje wskaźnik położenia pliku.

fpos<Statetype>& operator-=(streamoff _Off);

Parametry

_Od
Przesunięcie strumienia.

Wartość zwracana

Funkcja składowa zwraca wartość fpos(*this) -= _Off.

Uwagi

Podczas pracy z plikami wynik jest prawidłowy tylko dla strumieni binarnych, które nie mają kodowania zależnego od stanu.

Przykład

Zobacz operator!= przykład użycia elementu operator-=.

fpos::operator==

Testuje wskaźniki położenia pliku pod kątem równości.

bool operator==(const fpos<Statetype>& right) const;

Parametry

Prawy
Wskaźnik położenia pliku, z którym ma być porównywany.

Wartość zwracana

true jeśli wskaźniki położenia pliku są równe; w przeciwnym razie false.

Uwagi

Funkcja składowa zwraca wartość (streamoff)*this == (streamoff)right.

Przykład

Zobacz operator!= przykład użycia elementu operator+=.

fpos::operator streamoff

Rzutowanie obiektu typu fpos na obiekt typu streamoff.

operator streamoff() const;

Uwagi

Funkcja składowa zwraca przechowywany obiekt składowy przesunięcia i wszelkie dodatkowe przesunięcie przechowywane jako część fpos_t obiektu członkowskiego.

Przykład

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

Ta metoda jest używana wewnętrznie tylko przez bibliotekę standardową języka C++. Nie należy wywoływać tej metody z kodu.

fpos_t seekpos() const;

fpos::state

Ustawia lub zwraca stan konwersji.

Statetype state() const;

void state(Statetype _State);

Parametry

_Stan
Nowy stan konwersji.

Wartość zwracana

Stan konwersji.

Uwagi

Pierwsza funkcja składowa zwraca wartość przechowywaną St w obiekcie członkowskim. Druga funkcja składowa przechowuje _State w St obiekcie członkowskim.

Przykład

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

Zobacz też

Bezpieczeństwo wątku w standardowej bibliotece C++
iostream, programowanie
Konwencje iostream