Namespaces
Variants

std:: fpos

From cppreference.net
< cpp ‎ | io
헤더 파일에 정의됨 <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 가 trivial 복사 생성 가능하다면, fpos 는 trivial 복사 생성자를 가집니다. 만약 State 가 trivial 복사 할당 가능하다면, fpos 는 trivial 복사 할당 연산자를 가집니다. 만약 State 가 trivial 소멸 가능하다면, fpos 는 trivial 소멸자를 가집니다.

목차

템플릿 매개변수

State - 시프트 상태를 나타내는 타입
타입 요구사항
-
State 는 다음 요구사항들을 충족해야 함: Destructible , CopyAssignable , CopyConstructible DefaultConstructible .

멤버 함수

시프트 상태 값을 가져오기/설정하기
(public member function)

또한 다음 연산들을 지원하기 위해 멤버 및 비멤버 함수가 제공됩니다:

  • 오프셋을 0으로 저장하고 상태 객체를 값 초기화하는 기본 생성자.
  • (가능하면 const) std::streamoff 타입의 인수를 받는 non-explicit 생성자로, 해당 오프셋을 저장하고 상태 객체를 값 초기화합니다. 이 생성자는 또한 특수 값 std:: streamoff ( - 1 ) 도 받아야 합니다: 이 방식으로 생성된 std::fpos 는 일부 스트림 연산에서 오류를 나타내기 위해 반환됩니다.
  • (const일 수 있는) fpos 에서 std::streamoff 로의 명시적 변환. 결과는 저장된 오프셋입니다.
  • operator == operator ! = 는 (const 가능성이 있는) std::fpos 타입의 두 객체를 비교하여 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 를 뺀 결과인 오프셋을 저장합니다.
  • operator + = operator - = 는 (const일 수 있는) std::streamoff 를 받아들이고 저장된 오프셋에 각각 더하거나/빼는 연산자입니다.
  • operator - 는 (const 가능한) std::fpos 타입의 두 객체를 뺄 수 있으며, 그 결과로 std::streamoff 를 생성합니다. 이는 두 객체 p q 에 대해 p == q + ( p - q ) 가 성립하도록 합니다.

참고 사항

일부 I/O 스트림 멤버 함수 는 멤버 typedef pos_type 의 객체를 반환하고 조작합니다. 스트림의 경우 이러한 멤버 typedef는 템플릿 매개변수 Traits 에 의해 제공되며, 이는 기본적으로 std::char_traits 로 설정되어 있으며, 여기서는 pos_type std::fpos 의 특수화로 정의합니다. I/O 스트림 라이브러리의 동작은 Traits::pos_type std :: fpos < std:: mbstate_t > (즉 std::streampos , std::wstreampos 등)가 아닐 경우 구현에 따라 정의됩니다.

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 수정된 동작
LWG 57 C++98 streampos wstreampos 가 모순적으로
다를 수 있으면서 동일해야 한다고 요구됨
동일하게
명확히 규정
P0759R1 C++98 명세가 불명확하고 불완전했음 정리됨
P1148R0 C++11 u16streampos u32streampos 정의가
무엇이며 어느 헤더에 있는지 불명확했음
명확히 규정
LWG 2114
( P2167R3 )
C++98 동등 비교의 non- bool 반환 타입이 허용됨 허용되지 않음

참고 항목

상대적 파일/스트림 위치(fpos로부터의 오프셋)를 나타내며, 모든 파일 크기를 표현하기에 충분함
(typedef)
출력 위치 표시자를 반환함
( std::basic_ostream<CharT,Traits> 의 public member function)
출력 위치 표시자를 설정함
( std::basic_ostream<CharT,Traits> 의 public member function)
파일 위치 표시자를 얻음
(function)