Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.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++ 如何流式传输/读取二进制文件的中间部分,并在标准c+中写入另一个文件+;?_C++_Stream_Fstream_Binaryfiles - Fatal编程技术网

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

C++ 如何流式传输/读取二进制文件的中间部分,并在标准c+中写入另一个文件+;?,c++,stream,fstream,binaryfiles,C++,Stream,Fstream,Binaryfiles,如果我有一个1000字节的文件(只是一个简单的例子),如何从300字节到700字节读取字节,并将该部分写入新的二进制文件,特别是使用fstream? 该过程应该是独立于平台的(使用c++11),甚至适用于大型文件 请注意, 我不在乎它需要多长时间(性能),只要它不失败。所以我喜欢将字节一个字节写入文件的方法,就像下载大文件一样 在web上可能会有很多类似的问题,但所有这些问题要么涉及复制整个文件,读取文本文件的一部分,要么只涉及可能作为字节数组变量保存并操纵它的小文件 请帮帮我。 谢谢 简而言之

如果我有一个1000字节的文件(只是一个简单的例子),如何从300字节到700字节读取字节,并将该部分写入新的二进制文件,特别是使用fstream? 该过程应该是独立于平台的(使用c++11),甚至适用于大型文件

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

在web上可能会有很多类似的问题,但所有这些问题要么涉及复制整个文件,读取文本文件的一部分,要么只涉及可能作为字节数组变量保存并操纵它的小文件

请帮帮我。 谢谢

简而言之:

打开文件进行读取。试图抵消300。将400字节读入缓冲区。关闭文件。 打开第二个文件进行写入。将缓冲区写入第二个文件。关闭第二个文件。释放缓冲区。

简而言之:

打开文件进行读取。试图抵消300。将400字节读入缓冲区。关闭文件。 打开第二个文件进行写入。将缓冲区写入第二个文件。关闭第二个文件。释放缓冲区

  • 使用fopen打开二进制文件,第二个参数可能需要'rb'
  • 使用fseek重新定位流位置指示器
  • 使用fread读取您想要的零件长度
  • 使用fwrite完成目标文件。 它们都是C++ STD.
  • 使用fopen打开二进制文件,第二个参数可能需要'rb'
  • 使用fseek重新定位流位置指示器
  • 使用fread读取您想要的零件长度
  • 使用fwrite完成目标文件。 它们都是C++ STD.

  • 好的,但是你能帮我查一下示例代码吗?我可以用Java,但用CPP不行@小丑Juhl@WailenB我可以,但我不会。这不是一个代码编写服务。但是我会告诉你一些你自己需要研究的事情:寻找你可以使用的或者如果你没有使用
    fstream
    。作为你可以使用的缓冲区。谢谢!我不知道那个政策!我会尝试,但如果你在博客中找到关于这个问题的答案,请在这里提及,因为这些解决方案(答案)不仅适用于我,也适用于所有人,甚至是那些拥有高级知识的人。提醒:以二进制模式打开文件,这样操作系统就不会对你的数据执行任何翻译。例如,一些操作系统将0x1A识别为文件结束标记。好的,但您能帮助我了解示例代码吗?我可以用Java,但用CPP不行@小丑Juhl@WailenB我可以,但我不会。这不是一个代码编写服务。但是我会告诉你一些你自己需要研究的事情:寻找你可以使用的或者如果你没有使用
    fstream
    。作为你可以使用的缓冲区。谢谢!我不知道那个政策!我会尝试,但如果你在博客中找到关于这个问题的答案,请在这里提及,因为这些解决方案(答案)不仅适用于我,也适用于所有人,甚至是那些拥有高级知识的人。提醒:以二进制模式打开文件,这样操作系统就不会对你的数据执行任何翻译。例如,一些操作系统将0x1A识别为文件结束标记。谢谢@杨:这些步骤对那些有足够知识的人来说是非常有用和容易的。但对我来说,我还是要花更多的时间去掌握。谢谢@杨:这些步骤对那些有足够知识的人来说是非常有用和容易的。但对我来说,我仍然需要更多的时间来掌握。