Я использую 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 байта. Я подтвердил, что размер файла правильный с помощью шестнадцатеричного редактора. Так почему я не получаю правильный размер?
Мой ответ: я думаю, что проблема была вызвана наличием нескольких открытых потоков в файл. По крайней мере, это, кажется, разобралось со мной. Спасибо всем, кто помог.