C ++: получение неверного размера файла

Я использую Linux и C ++. У меня есть двоичный файл размером 210732 байта, но размер, указанный с seekg / tellg, составляет 210728.

Я получаю следующую информацию из ls-la, то есть 210732 байта:

-rw-rw-r-- 1 pjs pjs 210732 17 февраля 10:25 output.osr

И со следующим фрагментом кода, я получаю 210728:

std::ifstream handle;
handle.open("output.osr", std::ios::binary | std::ios::in);
handle.seekg(0, std::ios::end);
std::cout << "file size:" << static_cast<unsigned int>(handle.tellg()) << std::endl;

Так что мой код отключен на 4 байта. Я подтвердил, что размер файла правильный с помощью шестнадцатеричного редактора. Так почему я не получаю правильный размер?

Мой ответ: я думаю, что проблема была вызвана наличием нескольких открытых потоков в файл. По крайней мере, это, кажется, разобралось со мной. Спасибо всем, кто помог.

Ответы на вопрос(4)

Ваш ответ на вопрос