C++ 如何找到n';文件中的第个字节
我有一个不寻常的问题。由于我的前任的设计,我有一个27MB的文件,我需要在其中找到一个特定的字节,比如说第100000个字节。然后我必须删除10万到15万字节之间的所有内容 该文件被分解为头文件(大约10000个字符后以C++ 如何找到n';文件中的第个字节,c++,byte,C++,Byte,我有一个不寻常的问题。由于我的前任的设计,我有一个27MB的文件,我需要在其中找到一个特定的字节,比如说第100000个字节。然后我必须删除10万到15万字节之间的所有内容 该文件被分解为头文件(大约10000个字符后以[END]结尾)和实际数据,它们都是字节形式。2700万字节在大约15000行上分开 任何帮助都将不胜感激。对于您的情况,一种解决方案(除非您对空间使用有严格限制)是将您的文件复制到另一个不需要的跳过字节中。取决于如何计算以二进制模式打开文件时可能需要的第n个字节。您可以将源文件
[END]
结尾)和实际数据,它们都是字节形式。2700万字节在大约15000行上分开
任何帮助都将不胜感激。对于您的情况,一种解决方案(除非您对空间使用有严格限制)是将您的文件复制到另一个不需要的跳过字节中。取决于如何计算以二进制模式打开文件时可能需要的第n个字节。您可以将源文件重命名为temp,然后以原始名称打开新文件,进行实际复制并删除源文件。或者,您可以将内容复制到临时文件,然后删除原始文件并将临时文件重命名为原始名称。
如果您对磁盘空间有限制,您可以存储剩余的文件(在您的示例中,从第150000位到最后一位),将原始文件截断到第1000000位,然后将剩余的文件复制回来。将文件1复制到文件以跳过不需要的区域
//open the files:
ifstream fin("filename.ext",ios::in|ios::binary);
ofstream fout("filename.ext",ios::out|ios::binary);
size_t position = ?? ;// position in file
size_t size = ??; //size you want to read
char buffer[BUFFSIZE];
//go to position:
fin.seekg(position);
//read from position
while(size > 0){
fin.read(buffer, MIN(size, BUFFSIZE));
size_t count;
fout.write(buffer, count);
size -= count;
}
2.7mb不是2700万。我不确定我在这里是否看到了一个实际问题,除了隐含的“请发送代码”。“这样做”不是一个问题。你能使用fseek函数找到这个地方吗?是的,@user2761933,有几种方法可以做到这一点。不过,我怀疑这是否真的是你的问题。