如何在文件中找到第n个字节

时间:2013-10-16 18:02:22

标签: c++ byte

我有一个不寻常的问题。由于我的前任设计,我有一个27 MB的文件,我需要在其中找到一个特定的字节,比如说第100,000个字节。然后我必须删除第100,000和第150,000字节之间的所有内容。

该文件被分解为一个头文件(在大约10,000个字符后以[END]结尾)和实际数据,这些都是字节形式。 2700万字节在大约15000行上分开。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

在您的情况下(除非您对空间使用有严格的限制),一种解决方案是将您的文件复制到您不需要的另一个跳过字节。取决于您如何计算第n个字节,您可能需要以二进制模式打开文件。您可以将源文件重命名为临时打开具有原始名称的新文件,执行实际复制和删除源。或者您可以将内容复制到临时文件,然后删除原始文件并将temp重命名为原始名称。 如果您对磁盘空间有限制,则可以存储剩余文件(在示例中从150,000到最后)将原始文件截断为100,000,然后将剩余文件复制回来。

答案 1 :(得分:0)

将文件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; 
}