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;
}
Еще раз спасибо за драгоценное время на мой вопрос