名前空間
変種
操作

std::fpos

From cppreference.com
< cpp‎ | io
 
 
 
ヘッダ<ios>で定義
template< class State >
class fpos;

クラステンプレートstd::fposの特殊化は、ストリームまたはファイル内の絶対位置を識別します。fpos型の各オブジェクトは、ストリーム内のバイト位置(通常はstd::streamoff型のプライベートメンバとして)と、現在のシフト状態(State型の値、通常はstd::mbstate_t)を保持します。

std::fpos<std::mbstate_t>の以下のtypedef名は提供されています(標準ではスペルが異なりますが、同じ型を指します)。

ヘッダー<iosfwd>で定義されています。
定義
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>

fposのすべての特殊化は、DefaultConstructibleCopyConstructibleCopyAssignableDestructible、およびEqualityComparableの要件を満たします。

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

目次

[編集] テンプレートパラメータ

状態 (State) - シフト状態を表す型
型要件
-
Stateは、DestructibleCopyAssignableCopyConstructible、およびDefaultConstructibleの要件を満たす必要があります。

[編集] メンバ関数

シフト状態の値を取得/設定します。
(public member function)

さらに、以下の操作をサポートするためのメンバ関数および非メンバ関数が提供されています。

  • オフセットゼロを格納し、状態オブジェクトを値初期化するデフォルトコンストラクタ。
  • 型((possibly const))std::streamoffの引数を受け入れる非明示的コンストラクタ。これはそのオフセットを格納し、状態オブジェクトを値初期化します。このコンストラクタは、特殊値std::streamoff(-1)も受け入れる必要があります。この方法で構築されたstd::fposは、エラーを示すために一部のストリーム操作によって返されます。
  • (possibly const)fposからstd::streamoffへの明示的な変換。結果は格納されているオフセットです。
  • (possibly const)std::fpos型の2つのオブジェクトを比較し、bool型のprvalueを返すoperator==およびoperator!=p != q!(p == q)と同等です。
  • (possibly const)fpos<State>型のオブジェクトpと、(possibly const)std::streamoff型のオブジェクトoに対するoperator+およびoperator-
  • p + ofpos<State>型を持ち、pのオフセットにoを加算した結果のオフセットを格納します。
  • o + pfpos<State>に変換可能な型を持ち、変換結果はp + oと等しくなります。
  • p - ofpos<State>型を持ち、pのオフセットからoを減算した結果のオフセットを格納します。
  • std::streamoffを受け入れ、それぞれ格納されているオフセットに加算/減算できるoperator+=およびoperator-=
  • (possibly const)std::fpos型の2つのオブジェクトを減算してstd::streamoffを生成するoperator-。2つのオブジェクトpおよびqに対して、p == q + (p - q)となります。

[編集] 注記

一部のI/Oストリームのメンバ関数は、メンバtypedefpos_typeのオブジェクトを返したり操作したりします。ストリームの場合、これらのメンバtypedefはテンプレートパラメータTraitsによって提供されます。Traitsはデフォルトでstd::char_traitsであり、そのpos_typestd::fposの特殊化として定義されます。Traits::pos_typestd::fpos<std::mbstate_t>(別名std::streamposstd::wstreamposなど)でない場合、I/Oストリームライブラリの動作は実装定義となります。

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 57 C++98 streamposwstreamposは矛盾して
異なっていてもよいが、同じである必要があった
明確化されて
同じになった
P0759R1 C++98 仕様が不明確で不完全だった 整理された
P1148R0 C++11 u16streamposおよびu32streampos
定義がどのヘッダーにあるのか不明
明確化された
LWG 2114
(P2167R3)
C++98 等価性比較の非bool戻り値が許可されていた 不許可になった

[編集] 関連項目

ファイル/ストリームの相対的な位置(fposからのオフセット)を表し、任意のファイルサイズを表現するのに十分
(typedef) [編集]
出力位置インジケータを返す
(std::basic_ostream<CharT,Traits> の public メンバ関数) [編集]
出力位置インジケータを設定する
(std::basic_ostream<CharT,Traits> の public メンバ関数) [編集]
ファイル位置指示子を取得する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)