std::streamoff
std::streamoff (스트림 오프셋 타입)
운영체제가 지원하는 최대 파일 크기를 나타낼 만큼 큰 부호 있는 정수 타입이에요. 보통 long long의 별칭이에요(C++11부터). 스트림 위치(std::fpos)로부터의 오프셋을 나타내는 데 쓰여요.
출처: cppreference
본문
<ios> 헤더에 정의돼 있어요.
typedef /*implementation-defined*/ streamoff;
타입 std::streamoff는 운영체제가 지원하는 최대 가능 파일 크기를 나타낼 만큼 큰 구현 정의 부호 있는 정수(C++11부터) 타입이에요. 보통 long long의 별칭이에요(C++11부터). 스트림 위치(std::fpos 타입의 값)로부터의 오프셋을 나타내는 데 쓰여요. 일부 I/O 라이브러리 함수는 -1로부터 생성된 std::streamoff 값으로 오류 조건을 나타내기도 해요.
std::fpos와의 관계
- 두
std::fpos의 차이는std::streamoff타입으로 변환돼요. - 하나의
std::fpos에std::streamoff를 더하면/빼면 새std::fpos가 돼요.
예제
#include <iostream>
#include <sstream>
#include <type_traits>
int main()
{
static_assert(std::is_signed_v<std::streamoff>);
std::istringstream s("hello");
std::streamoff off = s.tellg(); // streampos 를 streamoff 로
std::cout << off << '\n'; // "0"
}