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
, zazwyczajmbstate_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