fpos クラス
このクラス テンプレートは、システム内の任意のファイル位置インジケーターを復元するために必要なすべての情報を格納できるオブジェクトを表します。 fpos<St> クラスのオブジェクトには、実質的に 2 個以上のメンバー オブジェクトが格納されます。
streamoff 型のバイト オフセット。
basic_filebuf クラスのオブジェクトで使用するための
St
型の変換状態 (通常はmbstate_t
)。
basic_filebuf クラスのオブジェクトで使用するために、fpos_t
型の任意のファイル位置も格納できます。 ただし、ファイル サイズが制限された環境では、streamoff
と fpos_t
が区別されずに使用される場合があります。 状態依存のエンコードを使用したストリームがない環境では、実際に mbstate_t
が使用されていない場合があります。 したがって、格納されるメンバー オブジェクトの数が異なる場合があります。
構文
template <class Statetype>
class fpos
パラメーター
Statetype
状態情報。
コンストラクター
コンストラクター | 説明 |
---|---|
fpos | ストリーム内の位置 (オフセット) に関する情報を格納するオブジェクトを作成します。 |
メンバー関数
メンバー関数 | 説明 |
---|---|
seekpos | C++ 標準ライブラリのみによって内部的に使用されます。 コードからこのメソッドを呼び出さないでください。 |
state | 変換状態を設定または返します。 |
演算子
演算子 | 説明 |
---|---|
operator!= | ファイル位置インジケーターが等しくないかどうかをテストします。 |
operator+ | ファイル位置インジケーターをインクリメントします。 |
operator+= | ファイル位置インジケーターをインクリメントします。 |
operator- | ファイル位置インジケーターをデクリメントします。 |
operator-= | ファイル位置インジケーターをデクリメントします。 |
operator== | ファイル位置インジケーターが等しいかどうかをテストします。 |
operator streamoff | fpos 型のオブジェクトを streamoff 型のオブジェクトにキャストします。 |
要件
ヘッダー:<ios>
名前空間: std
fpos::fpos
ストリーム内の位置 (オフセット) に関する情報を格納するオブジェクトを作成します。
fpos(streamoff _Off = 0);
fpos(Statetype _State, fpos_t _Filepos);
パラメーター
_Off
ストリームへのオフセット。
_State
fpos
オブジェクトの開始状態。
_Filepos
ストリームへのオフセット。
解説
最初のコンストラクターは、ファイルの先頭と初期変換状態を基準にして、オフセット _Offを格納します。 _Off が -1 の場合、結果として得られるオブジェクトは無効なストリーム位置を表します。
2 番目のコンストラクターは、ゼロ オフセットとオブジェクト _State を格納します。
fpos::operator!=
ファイル位置インジケーターが等しくないかどうかをテストします。
bool operator!=(const fpos<Statetype>& right) const;
パラメーター
right
比較するファイル位置インジケーター。
戻り値
true
ファイル位置インジケーターが等しくない場合は >、それ以外の場合は false
。
解説
このメンバー関数は、!(*this == right)
を返します。
例
// fpos_op_neq.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>
int main( )
{
using namespace std;
fpos<int> pos1, pos2;
ifstream file;
char c;
// Compare two fpos object
if ( pos1 != pos2 )
cout << "File position pos1 and pos2 are not equal" << endl;
else
cout << "File position pos1 and pos2 are equal" << endl;
file.open( "fpos_op_neq.txt" );
file.seekg( 0 ); // Goes to a zero-based position in the file
pos1 = file.tellg( );
file.get( c);
cout << c << endl;
// Increment pos1
pos1 += 1;
file.get( c );
cout << c << endl;
pos1 = file.tellg( ) - fpos<int>( 2);
file.seekg( pos1 );
file.get( c );
cout << c << endl;
// Increment pos1
pos1 = pos1 + fpos<int>( 1 );
file.get(c);
cout << c << endl;
pos1 -= fpos<int>( 2 );
file.seekg( pos1 );
file.get( c );
cout << c << endl;
file.close( );
}
fpos::operator+
ファイル位置インジケーターをインクリメントします。
fpos<Statetype> operator+(streamoff _Off) const;
パラメーター
_Off
ファイル位置インジケーターをインクリメントするオフセット。
戻り値
ファイル内の位置。
解説
このメンバー関数は、fpos(*this) +=_Off
を返します。
例
operator+
の使用例については、operator!= を参照してください。
fpos::operator+=
ファイル位置インジケーターをインクリメントします。
fpos<Statetype>& operator+=(streamoff _Off);
パラメーター
_Off
ファイル位置インジケーターをインクリメントするオフセット。
戻り値
ファイル内の位置。
解説
メンバー関数は、格納されているオフセット メンバー オブジェクトに _Off を追加し、 *this
を返します。 ファイルを操作する場合、結果は、状態に依存するエンコードを持たないバイナリ ストリームに対してのみ有効です。
例
operator+=
の使用例については、operator!= を参照してください。
fpos::operator-
ファイル位置インジケーターをデクリメントします。
streamoff operator-(const fpos<Statetype>& right) const;
fpos<Statetype> operator-(streamoff _Off) const;
パラメーター
right
ファイルの位置。
_Off
ストリームのオフセット。
戻り値
最初のメンバー関数は (streamoff)*this - (streamoff) right
を返します。 2 番目のメンバー関数は fpos(*this) -= _Off
を返します。
例
operator-
の使用例については、operator!= を参照してください。
fpos::operator-=
ファイル位置インジケーターをデクリメントします。
fpos<Statetype>& operator-=(streamoff _Off);
パラメーター
_Off
ストリームのオフセット。
戻り値
このメンバー関数は、fpos(*this) -= _Off
を返します。
解説
ファイルを操作する場合、結果は、状態に依存するエンコードを持たないバイナリ ストリームに対してのみ有効です。
例
operator-=
の使用例については、operator!= を参照してください。
fpos::operator==
ファイル位置インジケーターが等しいかどうかをテストします。
bool operator==(const fpos<Statetype>& right) const;
パラメーター
right
比較するファイル位置インジケーター。
戻り値
ファイル位置インジケーターが等しい場合は true
。それ以外の場合は false
。
解説
このメンバー関数は、(streamoff)*this == (streamoff)right
を返します。
例
operator+=
の使用例については、operator!= を参照してください。
fpos::operator streamoff
fpos
型のオブジェクトを streamoff
型のオブジェクトにキャストします。
operator streamoff() const;
解説
このメンバー関数は、格納されたオフセット メンバー オブジェクト、および fpos_t
メンバー オブジェクトの一部として格納された追加のオフセットを返します。
例
// fpos_op_streampos.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
streamoff s;
ofstream file( "rdbuf.txt");
fpos<mbstate_t> f = file.tellp( );
// Is equivalent to ..
// streampos f = file.tellp( );
s = f;
cout << s << endl;
}
0
fpos::seekpos
このメソッドは、C++ 標準ライブラリのみによって内部的に使用されます。 コードからこのメソッドを呼び出さないでください。
fpos_t seekpos() const;
fpos::state
変換状態を設定または返します。
Statetype state() const;
void state(Statetype _State);
パラメーター
_State
新しい変換状態。
戻り値
変換状態。
解説
最初のメンバー関数は、St
メンバー オブジェクトに格納されている値を返します。 2 番目のメンバー関数は、_State を St
メンバー オブジェクトに格納します。
例
// fpos_state.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>
int main() {
using namespace std;
streamoff s;
ifstream file( "fpos_state.txt" );
fpos<mbstate_t> f = file.tellg( );
char ch;
while ( !file.eof( ) )
file.get( ch );
s = f;
cout << f.state( ) << endl;
f.state( 9 );
cout << f.state( ) << endl;
}