fpos
fpos
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:
- A byte offset, of type
streamoff
- An arbitrary file position, for use by an object of class
basic_filebuf
, of typefpos_t
- A conversion state, for use by an object of class
basic_filebuf
, of typeSt
, typicallymbstate_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.