Самый быстрый способ пропустить позицию в файле (C / C ++) - PullRequest
1 голос
/ 29 июня 2011

У меня есть несколько картинок 6k в двоичном формате (uint8), где я обрабатываю картинку блоками по 30 или более строк за раз.Смысл в том, что мне приходится пропускать большую часть файла, пока я не доберусь до нужной мне позиции.До сих пор кажется, что самым быстрым является чтение ненужной части во временной переменной и последующее удаление переменной, однако логически это не кажется самым эффективным способом.

ifstream img;
int startingPixel = N;
for(int frame=0;frame<numFrames;frame++){
    img.open("myfileAsFunctionOfFrame.bin",ios::in | ios::binary);
    img.read((char*) &tempArray[0], startingPixel*sizeof(uint8));
    img.read((char*) &myArray[frame*pixelsToRead], pixelsToRead*sizeof(uint8));
    img.close();
}
delete [] tempArray;

Я пытался использовать img.ignore (), но это сделало его медленнее.

Есть предложения?

Ответы [ 4 ]

2 голосов
/ 29 июня 2011

Используйте метод поиска.Это было сделано именно для того, что вы пытаетесь сделать.http://www.cplusplus.com/reference/iostream/istream/seekg/

Надеюсь, это поможет

2 голосов
/ 29 июня 2011

Для ifstream вы хотите использовать seekg().

http://www.cplusplus.com/reference/iostream/istream/seekg/

1 голос
/ 29 июня 2011

для ifstream вы можете использовать метод seekg

Док: http://cplusplus.com/reference/iostream/istream/seekg/

0 голосов
/ 29 июня 2011
img.seekg( 0, std::ios_base::cur ); // replace 0 with desired offset
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...