Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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