如何从最后一个光标位置读取文件
How to read file from last cursor position?
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字节。然后我想从 100 开始阅读。字节到 200。字节。。。直到文件结束。我做的是真的吗?
我认为myfile
是一个istream
。
在这种情况下,这不是它的工作方式:
-
read()
读取时移动文件指针,因此无需每次都seek()
- 您作为示例提供的循环会在每次读取 Chunck 时覆盖缓冲区,而不对其执行任何操作
你应该尝试这样的事情:
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
来确定其实际大小(例如(。
更多详细信息,请查看有关堆栈溢出的相关问题。
int fileParts = 30;
int bufSize = 100;
char buf[fileParts}[bufSize];
int i = 0;
while(!myfile.eof() && i<fileParts){
myfile.read(buf[i],100);
++i;
}
或者使用字节数组的向量而不是二维数组。
相关文章:
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- 0xC0000005:读取位置0xCDCDCDC1时发生访问冲突
- 0xC0000005:读取位置0xCDCDCDCD时发生访问冲突
- 读取类的析构函数中的位置时发生访问冲突
- 0x0F50DF58:0xC0000005:访问冲突读取位置0x0047CA04时未处理的异常
- 在 DLL 中嵌入 Python:Py_DECREF列表对象时访问冲突读取位置
- 0xC0000005:访问冲突读取位置0x0000000000000008
- C++访问冲突读取位置0xDDDDDDCD当我尝试删除已更新的数组时
- 使用向量的函数崩溃,调试器说访问冲突读取位置
- 如何在c++中从txt文件的随机位置读取数据
- 从C 中的特定位置读取文本文件的一行
- 如何从字符 * 缓冲区中的位置 y 读取 x 个字符
- 从文件C++中的特定位置读取
- Xcode 4输出文件并从奇怪的位置读取
- 如何从最后一个光标位置读取文件
- 如何从字符串流中的同一位置读取两次
- 从搅拌机的特定内存位置读取数据(结构)
- <向量>线程安全在不同位置读取/写入吗?
- 从位置读取文件(到位置)