Как говорит Майк Сеймор, если вы работаете с потоками C ++ io, std :: streampos является стандартным типом для представления позиции в файле.См.
http://www.cplusplus.com/reference/iostream/streampos/
Обратите внимание, что std :: size_t может быть неправильным.Например, в 32-разрядной системе std :: size_t будет 32-разрядным целым числом без знака, тогда как система вполне может поддерживать файлы, размер которых превышает 2 ^ 32 байта = 4 ГБ.
FWIW, в мире POSIX существует целочисленный тип со знаком off_t, который используется для представления размеров файлов и смещений.С помощью различных макросов (например, _FILE_OFFSET_BITS = 64 в Linux) можно переопределить off_t, чтобы он стал 64-битным типом.