我有一些二进制格式 (uint8) 的 6k 图片,我一次以 30 行左右的 block 为单位处理图片。这意味着我最终不得不跳过大部分文件,直到到达我需要的位置。到目前为止,最快的方法似乎是将不必要的部分读入一个临时变量,然后删除该变量,但从逻辑上讲,这似乎不是最有效的方法。
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(),但这使速度变慢了。
有什么建议吗?
最佳答案
使用 seekg 方法。它正是为您想要做的而制作的。 http://www.cplusplus.com/reference/iostream/istream/seekg/
希望对你有帮助
关于c++ - 跳转到文件中位置的最快方法 (C/C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521889/