std::fpos - cppreference.com (original) (raw)

| Defined in header | | | | ------------------------------------------------------------- | | | | 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 typedef names for std::fpos<std::mbstate_t> are provided (although they are spelled differently in the standard, they denote the same type):

Defined in header
Type Definition
std::streampos std::fpos<std::char_traits<char>::state_type>
std::wstreampos std::fpos<std::char_traits<wchar_t>::state_type>
std::u8streampos(C++20) std::fpos<std::char_traits<char8_t>::state_type>
std::u16streampos (C++11) std::fpos<std::char_traits<char16_t>::state_type>
std::u32streampos (C++11) std::fpos<std::char_traits<char32_t>::state_type>

All specializations of fpos meet the DefaultConstructible, CopyConstructible, CopyAssignable, Destructible, and EqualityComparable requirements.

If State is trivially copy constructible, fpos has a trivial copy constructor. If State is trivially copy assignable, fpos has a trivial copy assignment operator. If State is trivially destructible, fpos has a trivial destructor.

[edit] Template parameter

[edit] Member functions

| | gets/sets the value of the shift state (public member function) | | ------------------------------------------------------------------ |

In addition, member and non-member functions are provided to support the following operations:

[edit] Notes

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, std::wstreampos, etc.).

[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 57 C++98 streampos and wstreampos were contradictionallyallowed to be different while required to be the same clarified tobe the same
P0759R1 C++98 specification was unclear and incomplete cleaned up
P1148R0 C++11 unclear what and in which header thedefinitions u16streampos and u32streampos are made clear
LWG 2114(P2167R3) C++98 non-bool return types of equality comparisons were allowed disallowed

[edit] See also

| | represents relative file/stream position (offset from fpos), sufficient to represent any file size (typedef) [edit] | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | returns the output position indicator (public member function of std::basic_ostream<CharT,Traits>) [edit] | | | sets the output position indicator (public member function of std::basic_ostream<CharT,Traits>) [edit] | | | gets the file position indicator (function) [edit] |