我假设myfile
是一个istream
.
在这种情况下,这并不是它的工作方式:
read()
读取时移动文件指针,所以不需要seek()
每次都移动
- 您作为示例提供的循环在每次读取块时都会覆盖缓冲区,而不对其进行任何操作
你应该尝试这样的事情:
char buf[100];
int bufSize = 100;
while(!myfile.eof()){
myfile.read(buf, bufSize);
// do something with your chunck here.
}
或者像这样:
char * theWholeFile;
int pos = 0;
int chunckSize = 100;
theWholeFile = new char[myfile.tellg()];
while(!myfile.eof()){
myfile.read(theWholeFile + pos, chunckSize);
pos += chunckSize;
}
// theWholeFile contains the whole file at that point. Don't forget to delete it at some point!
我没有在这里处理最后一块。它的大小可以是 0 到 100 之间的任何值。您可以使用myfile.tellg() % chunckSize
它来确定它的实际大小(例如)。
有关更多详细信息,请查看Stack Overflow 上的相关问题。