次の方法で共有


fpos クラス

このクラス テンプレートは、システム内の任意のファイル位置インジケーターを復元するために必要なすべての情報を格納できるオブジェクトを表します。 fpos<St> クラスのオブジェクトには、実質的に 2 個以上のメンバー オブジェクトが格納されます。

  • streamoff 型のバイト オフセット。

  • basic_filebuf クラスのオブジェクトで使用するための St 型の変換状態 (通常は mbstate_t)。

basic_filebuf クラスのオブジェクトで使用するために、fpos_t 型の任意のファイル位置も格納できます。 ただし、ファイル サイズが制限された環境では、streamofffpos_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 番目のメンバー関数は、_StateSt メンバー オブジェクトに格納します。

// 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;
}

関連項目

C++ 標準ライブラリ内のスレッド セーフ
iostream プログラミング
iostreams の規則