如何在标准C ++中流式传输/读取二进制文件的中间部分并写入另一个文件?

时间:2018-08-18 10:52:21

标签: c++ stream fstream binaryfiles

如果我有1000字节的文件(仅是简单示例),如何读取300字节至700字节的字节并将该部分写入新的二进制文件,特别是使用fstream? 该过程应与平台无关(使用c ++ 11),甚至适用于大文件。

请注意, 我不在乎只要不失败,它将花费多长时间(性能)。因此,我喜欢这种将字节一个字节地写入文件的方法,就像下载大文件时一样。

在网络上可能会有很多这样的问题,但是所有这些问题要么涉及复制整个文件,读取文本文件的一部分,要么仅涉及可能作为字节数组变量保存并对其进行操作的小文件。

请帮帮我。 谢谢!

2 个答案:

答案 0 :(得分:3)

简而言之:

打开文件进行读取。寻求偏移300。将400个字节读入缓冲区。关闭文件。 打开第二个文件进行写入。将缓冲区写入第二个文件。关闭第二个文件。释放缓冲区。

答案 1 :(得分:0)

  1. 使用fopen打开二进制文件,第二个参数可能需要'rb'
  2. 使用fseek重新定位流位置指示器
  3. 使用fread读取想要保留多长时间的零件
  4. 使用fwrite完成目标文件。 它们都是C ++ Std。