std:: fpos
|
ヘッダーで定義
<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 を減算した結果のオフセットを格納する。
-
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>
の公開メンバ関数)
|
|
|
ファイル位置指示子を取得する
(関数) |