char buf[100];
int bufSize = 100;
int lastPosition = 0;
while(!myfile.eof()){
myfile.read(buf,100);
myfile.seekg(lastPosition);
lastPosition = lastPosition + bufSize;
}
我尝试从myfile中读取100个字节并将光标位置设置为100. byte。然后我想从100.字节到200.字节读取...直到文件结束。我正在做的是真的吗?
答案 0 :(得分:0)
int fileParts = 30;
int bufSize = 100;
char buf[fileParts}[bufSize];
int i = 0;
while(!myfile.eof() && i<fileParts){
myfile.read(buf[i],100);
++i;
}
或者使用字节数组的向量而不是二维数组。
答案 1 :(得分:0)
我认为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!
我没有在这里处理最后一个chunck。它的大小可以是0到100之间的任何值。您可以使用myfile.tellg() % chunckSize
来确定其实际大小(例如)。
有关详细信息,请查看此related question on Stack Overflow。