namespace std {
template <class stateT>
class fpos;
}
fposは、ファイル上の位置を表現するクラスである。
概念的には、stateTによる変換状態と整数によるオフセットでファイル上の位置を表現するクラスである。
多くの場合、stateTとしてはstd::mbstate_tが使用される。とくに、<iosfwd>ヘッダでは、以下の別名型が定義されている。
template<class state> class fpos;
using streampos = fpos<char_traits<char>::state_type>;
using wstreampos = fpos<char_traits<wchar_t>::state_type>;
using u8streampos = fpos<char_traits<char8_t>::state_type>;
using u16streampos = fpos<char_traits<char16_t>::state_type>;
using u32streampos = fpos<char_traits<char32_t>::state_type>;
char、wchar_t、char8_t、char16_t、char32_t型についてchar_traits<charT>::state_typeはstd::mbstate_tの別名である。
メンバ関数
構築・破棄
| 名前 | 説明 | 対応バージョン |
|---|---|---|
state |
状態の取得・設定 |
要件
fposに関連して、以下の操作が可能であることが要求される。
| 式・文 | 説明 | アサーション・その他注釈 |
|---|---|---|
P(i) |
intからの一時オブジェクトの作成 | p == P(i) |
P p(i); |
intからのオブジェクトの作成 | 事後条件: p == P(i) |
P p = i; |
〃 | 〃 |
P(o) |
オフセットからの(一時)オブジェクトの生成 | |
O(p) |
オフセットへの変換 | P(O(p)) == p |
p == q |
比較 | 結果の型はboolに変換可能である |
p != q |
〃 | 〃 |
q = p + o |
正値のオフセット | q - o == p |
p += o |
〃 | 〃 |
q = p - o |
q + o == p |
|
q -= o |
〃 | |
o = p - q |
fpos同士の差 | q + o == p |
streamsize(o) |
型変換 | streamsize(O(sz)) == sz |
O(sz) |
型変換 | 〃 |
- P: fpos<T>である型
- p, q: fpos<T>である型の値
- O: streamoff型
- o: streamoff型の値
- sz: streamsize型の値
- i: int型の値
なお、P(O(-1))はエラー値である。basic_istream/basic_ostream/basic_streambufでは以下のように扱われる。