fpos 클래스
클래스 템플릿은 임의의 파일 위치 표시기를 모든 스트림 내에서 복원하는 데 필요한 모든 정보를 저장할 수 있는 개체를 설명합니다. 클래스 fpos<St> 의 개체는 두 개 이상의 멤버 개체를 효과적으로 저장합니다.
streamoff 형식의 바이트 오프셋
일반적으로
mbstate_t
형식의 클래스 basic_filebufSt
개체에서 사용하는 변환 상태입니다.
basic_filebuf 클래스의 개체에서 사용하기 위한 fpos_t
형식의 임의 파일 위치를 저장할 수도 있습니다. 그러나 파일 크기가 제한된 환경에서는 streamoff
와 fpos_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;
}