std::fpos
ヘッダ <ios> で定義
|
||
template< class State > class fpos; |
||
クラステンプレート std::fpos の特殊化はストリーム内またはファイル内の絶対位置を表します。 fpos
型のオブジェクトはそれぞれストリーム内のバイト位置 (一般的には std::streamoff 型のプライベートメンバとして) および現在のシフト状態 (State
型の値、 一般的には std::mbstate_t) を保持します。
std::fpos の以下の特殊化が提供されます。
型 | 定義 |
streampos
|
std::fpos<std::char_traits<char>::state_type> |
wstreampos
|
std::fpos<std::char_traits<wchar_t>::state_type> |
u8streampos (C++20以上)
|
std::fpos<std::char_traits<char8_t>::state_type> |
u16streampos (C++11以上)
|
std::fpos<std::char_traits<char16_t>::state_type> |
u32streampos (C++11以上)
|
std::fpos<std::char_traits<char32_t>::state_type> |
fpos
のすべての特殊化は DefaultConstructible、 CopyConstructible、 CopyAssignable、 Destructible および EqualityComparable の要件を満たします。
State
がトリビアルにコピー構築可能であれば、 fpos
はトリビアルなコピーコンストラクタを持ちます。
State
がトリビアルにコピー代入可能であれば、 fpos
はトリビアルなコピー代入演算子を持ちます。
State
がトリビアルに破棄可能であれば、 fpos
はトリビアルなデストラクタを持ちます。
目次 |
[編集] テンプレート引数
State | - | シフト状態を表す型 |
型の要件 | ||
-State は Destructible, CopyAssignable, CopyConstructible および DefaultConstructible の要件を満たさなければなりません。
|
[編集] メンバ関数
シフト状態の値を取得または設定します (パブリックメンバ関数) |
さらに、以下の操作をサポートするメンバおよび非メンバ関数が提供されなければなりません。
- ゼロのオフセットを格納し状態オブジェクトを値初期化するデフォルトコンストラクタ。
- (const かもしれない) std::streamoff 型の引数を取る非 explicit コンストラクタ。 オフセットを格納し、状態オブジェクトを値初期化します。 このコンストラクタは特別な値 std::streamoff(-1) も受理しなければなりません。 この方法で構築された
std::fpos
はエラーを表すためにいくつかのストリーム操作によって返されます。
- (const かもしれない)
fpos
から std::streamoff への明示的な変換。 結果は格納されているオフセットです。
- (const かもしれない)
std::fpos
型の2つのオブジェクトを比較し bool に変換可能な型の値を返す operator== および operator!=。 p != q は !(p == q) と同等です。
- (const かもしれない)
fpos<State>
型のオブジェクトp
および (const かもしれない) std::streamoff 型のオブジェクトo
に対する、以下のような operator+ および operator-。
- p + o は型
fpos<State>
を持ち、p
のオフセットにo
を加算した結果��あるオフセットを格納します。 - o + p は
fpos<State>
に変換可能な型を持ち、変換の結果は p + o に等しくなります。 - p - o は型
fpos<State>
を持ち、p
のオフセットからo
を減算した結果であるオフセットを格納します。
- p + o は型
- (const かもしれない) std::streamoff を取ることができ、格納されているオフセットにそれを加算または減算する、 operator+= および operator-=。
- (const かもしれない)
std::fpos
型の2つのオブジェクトを減算でき、そのような2つのオブジェクトp
およびq
に対して p == q + (p - q) であるような std::streamoff を生成する、 operator-。
[編集] ノート
std::char_traits<char>::state_type と std::char_traits<wchar_t>::state_type がどちらも std::mbstate_t であることが要求されるため、 std::streampos
と std::wstreampos
は同じ型であることが要求されます。 C++98 では、処理系がナロー指向の入出力ストリームではシフトエンコーディングをサポートしないけれどもワイド指向のストリームではシフトエンコーディングをサポートする場合、それらは異なっていてもよいという自己矛盾した文がありましたが、これは C++03 で訂正されました。
入出力ストリームのメンバ関数のいくつかはメンバ型 pos_type
のオブジェクトを返したり操作したりします。 ストリームの場合、これらのメンバ型はテンプレート引数 Traits
によって提供され、それはデフォルトでは std::char_traits であり、それは pos_type
を std::fpos
の特殊化として定義します。 Traits::pos_type が std::fpos<std::mbstate_t> (別名 std::streampos または std::wstreampos) でない場合、入出力ストリームの動作は処理系定義です。
[編集] 欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
DR | 適用先 | 発行時の動作 | 正しい動作 |
---|---|---|---|
P0759R1 | C++98 | specification was unclear and incomplete | cleaned up |
P1148R0 | C++11 | unclear what header defines u16streampos and u32streampos or what their definitions are
|
made clear |
[編集] 関連項目
ファイルまたはストリームの相対位置 (fpos からのオフセット) を表します。 任意のファイルサイズを表現するのに十分な大きさです (typedef) | |
出力位置指示子を返します ( std::basic_ostream<CharT,Traits> のパブリックメンバ関数)
| |
出力位置指示子を設定します ( std::basic_ostream<CharT,Traits> のパブリックメンバ関数)
| |
ファイル位置指示子を取得します (関数) |