std::fpos
|   Defined in header  
<ios>
  | 
||
|   template< class State > 
class fpos;  | 
||
Specializations of the class template std::fpos identify absolute positions in a stream or in a file. Each object of type fpos holds the byte position in the stream (typically as a private member of type std::streamoff) and the current shift state, a value of type State (typically std::mbstate_t).
The following specializations of std::fpos are provided:
| Type | Definition | 
  streampos
 | 
std::fpos<std::char_traits<char>::state_type> | 
  wstreampos
 | 
std::fpos<std::char_traits<wchar_t>::state_type> | 
| 
 In addition, std::u16streampos and std::u32streampos are provided as implementation-defined types that satisfy the requirements of   | 
(since C++11) | 
[edit] Member functions
|    gets/sets the value of the shift state  (public member function)  | 
In addition, the following member functions and operators must be provided, although it's unspecified if they are members or non-member.
- A constructor that accepts an argument of type int.
 
-  A constructor that accepts an argument of type std::streamoff. This constructor must also accept the special value std::streamoff(-1): the 
std::fposconstructed in this manner is returned by some stream operations to indicate errors. 
-  A conversion operator that converts 
fposto std::streamoff with the value equal to the offset fromstd::fpos(0). 
-  operator== that compares two objects of type 
std::fposand returns a value of type convertible to bool 
-  operator!= that compares two objects of type 
std::fposand returns a value of type convertible to bool 
-  operator+ and operator+= which can add std::streamoff to 
std::fpos 
-  operator- and operator-= which can subtract std::streamoff from an 
std::fpos 
-  operator- which can subtract two objects of type 
std::fposproducing an std::streamoff 
[edit] Notes
std::streampos and std::wstreampos are required to be the same type because std::char_traits<char>::state_type and std::char_traits<wchar_t>::state_type are required to both be std::mbstate_t. C++98 had a self-contradictory statement that they may be different if the implementation supports no shift encoding in narrow-oriented iostreams but supports one or more shift encodings in wide-oriented streams, but that was corrected in C++03.
Some of the I/O streams member functions return and manipulate objects of member typedef pos_type. For streams, these member typedefs are provided by the template parameter Traits, which defaults to std::char_traits, which define their pos_types to be specializations of std::fpos. The behavior of the I/O streams library is implementation-defined when Traits::pos_type is not std::fpos<std::mbstate_t> (aka std::streampos or std::wstreampos).
[edit] See also
|    represents relative file/stream position (offset from fpos), sufficient to represent any file size   (typedef)  | 
|
|    returns the output position indicator  (public member function of std::basic_ostream) 
 | 
|
|    sets the output position indicator  (public member function of std::basic_ostream) 
 | 
|
|    gets the file position indicator  (function)  |