Namespaces
Variants

std:: fpos

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

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

以下のtypedef名は std :: fpos < std:: mbstate_t > に対して提供されています(標準では異なる綴りですが、同じ型を表します):

ヘッダーで定義 <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 のすべての特殊化は、 DefaultConstructible CopyConstructible CopyAssignable Destructible 、および EqualityComparable の要件を満たします。

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

目次

テンプレートパラメータ

状態 - シフト状態を表す型
型要件
-
State Destructible CopyAssignable CopyConstructible および DefaultConstructible の要件を満たさなければならない。

メンバー関数

シフト状態の値を取得/設定する
(公開メンバ関数)

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

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

注記

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

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 57 C++98 streampos wstreampos が矛盾して
異なることを許可されながら同一であることが要求されていた
同一であることを
明確化
P0759R1 C++98 仕様が不明確で不完全だった 整理された
P1148R0 C++11 u16streampos u32streampos の定義が
何でありどのヘッダにあるか不明確だった
明確化された
LWG 2114
( P2167R3 )
C++98 等価比較の非 bool 戻り値型が許可されていた 許可されなくなった

関連項目

相対的なファイル/ストリーム位置(fposからのオフセット)を表し、あらゆるファイルサイズを表現するのに十分
(typedef)
出力位置指示子を返す
( std::basic_ostream<CharT,Traits> の公開メンバ関数)
出力位置指示子を設定する
( std::basic_ostream<CharT,Traits> の公開メンバ関数)
ファイル位置指示子を取得する
(関数)