다음을 통해 공유


fpos 클래스

클래스 템플릿은 임의의 파일 위치 표시기를 모든 스트림 내에서 복원하는 데 필요한 모든 정보를 저장할 수 있는 개체를 설명합니다. 클래스 fpos<St> 의 개체는 두 개 이상의 멤버 개체를 효과적으로 저장합니다.

  • streamoff 형식의 바이트 오프셋

  • 일반적으로 mbstate_t형식의 클래스 basic_filebuf St개체에서 사용하는 변환 상태입니다.

basic_filebuf 클래스의 개체에서 사용하기 위한 fpos_t 형식의 임의 파일 위치를 저장할 수도 있습니다. 그러나 파일 크기가 제한된 환경에서는 streamofffpos_t를 바꿔서 사용할 수 있는 경우도 있습니다. 상태 종속적 인코딩을 포함하는 스트림이 없는 환경에서는 mbstate_t가 실제로 사용되지 않을 수 있습니다. 따라서 저장되는 멤버 개체 수는 경우에 따라 다를 수 있습니다.

구문

template <class Statetype>
class fpos

매개 변수

Statetype
상태 정보입니다.

생성자

생성자 Description
fpos 스트림 내의 위치(오프셋)에 대한 정보를 포함하는 개체를 만듭니다.

멤버 함수

멤버 함수 설명
seekpos C++ 표준 라이브러리에서만 내부적으로 사용됩니다. 코드에서 이 메서드를 호출하지 마세요.
state 변환 상태를 설정하거나 반환합니다.

연산자

연산자 설명
operator!= 파일 위치 표시기가 같지 않은지 테스트합니다.
operator+ 파일 위치 표시기를 증가시킵니다.
operator+= 파일 위치 표시기를 증가시킵니다.
operator- 파일 위치 표시기를 감소시킵니다.
operator-= 파일 위치 표시기를 감소시킵니다.
연산자== 파일 위치 표시기가 같은지 테스트합니다.
operator streamoff fpos 형식의 개체를 streamoff 형식의 개체로 캐스팅합니다.

요구 사항

헤더:<ios>

네임스페이스: std

fpos::fpos

스트림 내의 위치(오프셋)에 대한 정보를 포함하는 개체를 만듭니다.

fpos(streamoff _Off = 0);

fpos(Statetype _State, fpos_t _Filepos);

매개 변수

_Off
스트림에 대한 오프셋입니다.

_상태
fpos 개체의 시작 상태입니다.

_Filepos
스트림에 대한 오프셋입니다.

설명

첫 번째 생성자는 파일의 시작 부분과 초기 변환 상태를 기준으로 오프셋 _Off 저장합니다. _Off -1이면 결과 개체가 잘못된 스트림 위치를 나타냅니다.

두 번째 생성자는 0 오프셋을 저장하고 개체 는 _State.

fpos::operator!=

파일 위치 표시기가 같지 않은지 테스트합니다.

bool operator!=(const fpos<Statetype>& right) const;

매개 변수

right
비교할 파일 위치 표시기입니다.

Return Value

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
파일 위치 표시기를 증분시킬 기준 오프셋입니다.

Return Value

파일 내 위치입니다.

설명

멤버 함수는 fpos(*this) +=_Off를 반환합니다.

예시

operator+ 사용에 대한 샘플은 operator!=을 참조하세요.

fpos::operator+=

파일 위치 표시기를 증가시킵니다.

fpos<Statetype>& operator+=(streamoff _Off);

매개 변수

_Off
파일 위치 표시기를 증분시킬 기준 오프셋입니다.

Return Value

파일 내 위치입니다.

설명

멤버 함수는 저장된 오프셋 멤버 개체에 _Off 추가한 다음 반환합니다*this. 파일로 작업할 때 결과는 상태 종속 인코딩이 없는 이진 스트림에만 유효합니다.

예시

operator+= 사용에 대한 샘플은 operator!=을 참조하세요.

fpos::operator-

파일 위치 표시기를 감소시킵니다.

streamoff operator-(const fpos<Statetype>& right) const;

fpos<Statetype> operator-(streamoff _Off) const;

매개 변수

right
파일 위치입니다.

_Off
스트림 오프셋입니다.

Return Value

첫 번째 구성원 함수는 (streamoff)*this - (streamoff) right를 반환합니다. 두 번째 구성원 함수는 fpos(*this) -= _Off를 반환합니다.

예시

operator- 사용에 대한 샘플은 operator!=을 참조하세요.

fpos::operator-=

파일 위치 표시기를 감소시킵니다.

fpos<Statetype>& operator-=(streamoff _Off);

매개 변수

_Off
스트림 오프셋입니다.

Return Value

멤버 함수는 fpos(*this) -= _Off를 반환합니다.

설명

파일로 작업할 때 결과는 상태 종속 인코딩이 없는 이진 스트림에만 유효합니다.

예시

operator-= 사용에 대한 샘플은 operator!=을 참조하세요.

fpos::operator==

파일 위치 표시기가 같은지 테스트합니다.

bool operator==(const fpos<Statetype>& right) const;

매개 변수

right
비교할 파일 위치 표시기입니다.

Return Value

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);

매개 변수

_상태
새로운 변환 상태입니다.

Return Value

변환 상태입니다.

설명

첫 번째 멤버 함수는 멤버 개체에 St 저장된 값을 반환합니다. 두 번째 멤버 함수는 멤버 개체에 St _State 저장합니다.

예시

// 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 규칙