std::fpos - cppreference.com
提供: cppreference.com
<tbody> </tbody>
|
|
||
クラステンプレート 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 はトリビアルなデストラクタを持ちます。
テンプレート引数
メンバ関数
| シフト状態の値を取得または設定します (パブリックメンバ関数) |
さらに、以下の操作をサポートするメンバおよび非メンバ関数が提供されなければなりません。
- ゼロのオフセットを格納し状態オブジェクトを値初期化するデフォルトコンストラクタ。
- (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を減算した結果であるオフセットを格納します。
- (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) [edit] | |
| 出力位置指示子を返します ( std::basic_ostream<CharT,Traits>のパブリックメンバ関数) [edit]
| |
| 出力位置指示子を設定します ( std::basic_ostream<CharT,Traits>のパブリックメンバ関数) [edit]
| |
| ファイル位置指示子を取得します (関数) [edit] |