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::fposstd::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"
}

더 알아보기 (Learn more)

cppreference