Sdílet prostřednictvím


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, obvykle mbstate_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) righthodnotu . 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