ifstream.eof () - конец файла достигнут до реального конца

У меня есть примерно 11.1G бинарный файл, где хранится серия кадров глубины из Kinect. В этом файле 19437 кадров. Чтобы прочитать один кадр за раз, я используюifstream вfstream но это достигаетВФ до реального конца файла. (Я получил только первые 20 кадров, и функция останавливается из-заВФ флаг)

Тем не менее, все кадры могут быть прочитаны с помощьюFread вSTDIO вместо.

Кто-нибудь может объяснить эту ситуацию? Спасибо за драгоценное время на мой вопрос.

Вот мои две функции:

// ifstream.read() - Does Not Work: the loop will stop after 20th frame because of the eof flag
ifstream depthStream("fileName.dat");
if(depthStream.is_open())
{
  while(!depthStream.eof())
  {
    char* buffer = new char[640*480*2];
    depthStream.read(buffer, 640*480*2);

    // Store the buffer data in OpenCV Mat

    delete[] buffer;
  }
}

// fread() - Work: Get 19437 frames successfully
FILE* depthStream
depthStream = fopen("fileName.dat", "rb");
if(depthStream != NULL)
{
  while(!feof(depthStream))
  {
    char* buffer = new char[640*480*2];
    fread(buffer, 1, 640*480*2, depthStream);

    // Store the buffer data in OpenCV Mat

    delete[] buffer;
}

Еще раз спасибо за драгоценное время на мой вопрос

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

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