名前空間
変種
操作

std::fpos

提供: cppreference.com
< cpp‎ | io
ヘッダ <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 のすべての特殊化は DefaultConstructibleCopyConstructibleCopyAssignableDestructible および EqualityComparable の要件を満たします。

State がトリビアルにコピー構築可能であれば、 fpos はトリビアルなコピーコンストラクタを持ちます。 State がトリビアルにコピー代入可能であれば、 fpos はトリビアルなコピー代入演算子を持ちます。 State がトリビアルに破棄可能であれば、 fpos はトリビアルなデストラクタを持ちます。

目次

[編集] テンプレート引数

State - シフト状態を表す型
型の要件
-
StateDestructible, 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 + pfpos<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_typestd::char_traits<wchar_t>::state_type がどちらも std::mbstate_t であることが要求されるため、 std::streamposstd::wstreampos は同じ型であることが要求されます。 C++98 では、処理系がナロー指向の入出力ストリームではシフトエンコーディングをサポートしないけれどもワイド指向のストリームではシフトエンコーディングをサポートする場合、それらは異なっていてもよいという自己矛盾した文がありましたが、これは C++03 で訂正されました。

入出力ストリームのメンバ関数のいくつかはメンバ型 pos_type のオブジェクトを返したり操作したりします。 ストリームの場合、これらのメンバ型はテンプレート引数 Traits によって提供され、それはデフォルトでは std::char_traits であり、それは pos_typestd::fpos の特殊化として定義します。 Traits::pos_typestd::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のパブリックメンバ関数) [edit]
出力位置指示子を設定します
(std::basic_ostreamのパブリックメンバ関数) [edit]
ファイル位置指示子を取得します
(関数) [edit]