template <class St>
class fpos {
public:
fpos(St state, fpos_t fposn);
fpos(streamoff off);
fpos_t get_fpos_t() const;
St state() const;
void state(St state);
operator streamoff() const;
streamoff operator-(const fpos<St>& rhs) const;
fpos<St>& operator+=(streamoff off);
fpos<St>& operator-=(streamoff off);
fpos<St> operator+(streamoff off) const;
fpos<St> operator-(streamoff off) const;
bool operator==(const fpos<St>& rhs) const;
bool operator!=(const fpos<St>& rhs) const;
};
The template class describes an object that can store all the information needed to restore an arbitrary file-position
indicator within any stream. An object of class fpos<St>
effectively stores three member objects:
streamoff
basic_filebuf
, of type fpos_t
basic_filebuf
, of type St
, typically mbstate_t
For an environment with limited file size, however, streamoff
and fpos_t
may sometimes be used interchangeably.
And for an environment with no streams that have a state-dependent encoding, mbstate_t
may actually be unused. So
the number of member objects stored may well vary from one to three.