Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何找到n';文件中的第个字节_C++_Byte - Fatal编程技术网

C++ 如何找到n';文件中的第个字节

C++ 如何找到n';文件中的第个字节,c++,byte,C++,Byte,我有一个不寻常的问题。由于我的前任的设计,我有一个27MB的文件,我需要在其中找到一个特定的字节,比如说第100000个字节。然后我必须删除10万到15万字节之间的所有内容 该文件被分解为头文件(大约10000个字符后以[END]结尾)和实际数据,它们都是字节形式。2700万字节在大约15000行上分开 任何帮助都将不胜感激。对于您的情况,一种解决方案(除非您对空间使用有严格限制)是将您的文件复制到另一个不需要的跳过字节中。取决于如何计算以二进制模式打开文件时可能需要的第n个字节。您可以将源文件

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

该文件被分解为头文件(大约10000个字符后以
[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,有几种方法可以做到这一点。不过,我怀疑这是否真的是你的问题。