fpos – třída
Šablona třídy popisuje objekt, který může ukládat všechny informace potřebné k obnovení libovolného indikátoru umístění souboru v libovolném datovém proudu. Objekt třídy fpos<St> efektivně ukládá alespoň dva členské objekty:
Posun bajtu typu streamoff.
Stav převodu, pro použití objektem třídy basic_filebuf, typu
St
, obvyklembstate_t
.
Může také uložit libovolné umístění souboru, pro použití objektem třídy basic_filebuf, typu fpos_t
. Pro prostředí s omezenou velikostí streamoff
souboru ale fpos_t
může být někdy zaměnitelný. Pro prostředí bez datových proudů, které mají kódování závislé na stavu, mbstate_t
může být ve skutečnosti nepoužité. Počet uložených členských objektů se proto může lišit.
Syntaxe
template <class Statetype>
class fpos
Parametry
Statetype
Informace o stavu
Konstruktory
Konstruktor | Popis |
---|---|
fpos | Vytvořte objekt, který obsahuje informace o pozici (posunu) v datovém proudu. |
Členské funkce
Členová funkce | Popis |
---|---|
hledání | Interní použití pouze standardní knihovnou jazyka C++. Tuto metodu nevolejte z kódu. |
state | Nastaví nebo vrátí stav převodu. |
Operátory
Operátor | Popis |
---|---|
operator!= | Testuje indikátory umístění souboru pro nerovnost. |
operator+ | Zvýší indikátor pozice souboru. |
operator+= | Zvýší indikátor pozice souboru. |
operátor- | Dekrementuje indikátor pozice souboru. |
operator-= | Dekrementuje indikátor pozice souboru. |
operator== | Testuje indikátory umístění souboru pro rovnost. |
streamoff – operátor | Přetypuje objekt typu fpos na objekt typu streamoff . |
Požadavky
Header:<ios>
Obor názvů: std
fpos::fpos
Vytvořte objekt, který obsahuje informace o pozici (posunu) v datovém proudu.
fpos(streamoff _Off = 0);
fpos(Statetype _State, fpos_t _Filepos);
Parametry
_Pryč
Posun do datového proudu.
_Stát
Počáteční stav objektu fpos
.
_Filepos
Posun do datového proudu.
Poznámky
První konstruktor ukládá posun _Off vzhledem k začátku souboru a v počátečním stavu převodu. Pokud je _Off -1, výsledný objekt představuje neplatnou pozici datového proudu.
Druhý konstruktor ukládá nulový posun a objekt _State.
fpos::operator!=
Testuje indikátory umístění souboru pro nerovnost.
bool operator!=(const fpos<Statetype>& right) const;
Parametry
Vpravo
Ukazatel pozice souboru, proti kterému se má porovnat.
Návratová hodnota
true
pokud indikátory umístění souboru nejsou stejné, jinak false
.
Poznámky
Členová funkce vrátí !(*this == right)
.
Příklad
// 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+
Zvýší indikátor pozice souboru.
fpos<Statetype> operator+(streamoff _Off) const;
Parametry
_Pryč
Posun, o který chcete zvýšit ukazatel pozice souboru.
Návratová hodnota
Pozice v souboru.
Poznámky
Členová funkce vrátí fpos(*this) +=_Off
.
Příklad
Viz operátor!= pro ukázku použití operator+
.
fpos::operator+=
Zvýší indikátor pozice souboru.
fpos<Statetype>& operator+=(streamoff _Off);
Parametry
_Pryč
Posun, o který chcete zvýšit ukazatel pozice souboru.
Návratová hodnota
Pozice v souboru.
Poznámky
Členské funkce přidá _Off k uloženému objektu člena posunu a poté vrátí *this
. Při práci se soubory je výsledek platný pouze pro binární datové proudy, které nemají kódování závislé na stavu.
Příklad
Viz operátor!= pro ukázku použití operator+=
.
fpos::operator-
Dekrementuje indikátor pozice souboru.
streamoff operator-(const fpos<Statetype>& right) const;
fpos<Statetype> operator-(streamoff _Off) const;
Parametry
Vpravo
Umístění souboru.
_Pryč
Posun datového proudu
Návratová hodnota
První členová funkce vrátí (streamoff)*this - (streamoff) right
hodnotu . Druhá členová funkce vrátí fpos(*this) -= _Off
.
Příklad
Viz operátor!= pro ukázku použití operator-
.
fpos::operator-=
Dekrementuje indikátor pozice souboru.
fpos<Statetype>& operator-=(streamoff _Off);
Parametry
_Pryč
Posun datového proudu
Návratová hodnota
Členová funkce vrátí fpos(*this) -= _Off
.
Poznámky
Při práci se soubory je výsledek platný pouze pro binární datové proudy, které nemají kódování závislé na stavu.
Příklad
Viz operátor!= pro ukázku použití operator-=
.
fpos::operator==
Testuje indikátory umístění souboru pro rovnost.
bool operator==(const fpos<Statetype>& right) const;
Parametry
Vpravo
Ukazatel pozice souboru, proti kterému se má porovnat.
Návratová hodnota
true
jsou-li indikátory pozice souboru stejné; jinak false
.
Poznámky
Členová funkce vrátí (streamoff)*this == (streamoff)right
.
Příklad
Viz operátor!= pro ukázku použití operator+=
.
fpos::operator streamoff
Přetypování objektu typu fpos
na objekt typu streamoff
.
operator streamoff() const;
Poznámky
Členová funkce vrátí uložený objekt člena posunu a všechny další posuny uložené jako součást členového objektu fpos_t
.
Příklad
// 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
Tuto metodu interně používá pouze standardní knihovna jazyka C++. Tuto metodu nevolejte z kódu.
fpos_t seekpos() const;
fpos::state
Nastaví nebo vrátí stav převodu.
Statetype state() const;
void state(Statetype _State);
Parametry
_Stát
Nový stav převodu.
Návratová hodnota
Stav převodu.
Poznámky
První členová funkce vrátí hodnotu uloženou v objektu člena St
. Druhá členová funkce ukládá _State v objektu člena St
.
Příklad
// 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;
}
Viz také
Bezpečný přístup z více vláken ve standardní knihovně C++
iostream – programování
iostreams – konvence