为了账号安全,请及时绑定邮箱和手机立即绑定

请问读写二进制文件

请问读写二进制文件

C++
拉莫斯之舞 2019-11-17 16:12:29
读写二进制文件我正在尝试编写代码将二进制文件读入缓冲区,然后将缓冲区写入另一个文件。我有以下代码,但缓冲区只存储文件中第一行的几个ASCII字符,没有别的。int length;char * buffer;ifstream is;is.open ("C:\\Final.gif", ios::binary );// get length of file:is.seekg (0, ios::end);length = is.tellg();is.seekg (0, ios::beg);// allocate memory:buffer = new char [length];// read data as a block:is.read (buffer,length);is.close();FILE *pFile;pFile = fopen ("C:\\myfile.gif", "w");fwrite (buffer , 1 , sizeof(buffer) , pFile );
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

如果你想用C ++方式做这个,那就这样做:

#include <fstream>#include <iterator>#include <algorithm>int main(){
    std::ifstream input( "C:\\Final.gif", std::ios::binary );
    std::ofstream output( "C:\\myfile.gif", std::ios::binary );

    std::copy( 
        std::istreambuf_iterator<char>(input), 
        std::istreambuf_iterator<char>( ),
        std::ostreambuf_iterator<char>(output));}

如果您需要缓冲区中的数据来修改它或其他内容,请执行以下操作:

#include <fstream>#include <iterator>#include <vector>int main(){
    std::ifstream input( "C:\\Final.gif", std::ios::binary );

    // copies all data into buffer
    std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {});}



查看完整回答
反对 回复 2019-11-18
?
三国纷争

TA贡献1804条经验 获得超7个赞

这是一个简短的例子,使用C ++方式rdbuf。我从网上得到了这个。我找不到我原来的来源:

#include <fstream>#include <iostream>int main () {
  std::ifstream f1 ("C:\\me.txt",std::fstream::binary);

  std::ofstream f2 ("C:\\me2.doc",std::fstream::trunc|std::fstream::binary);

  f2<<f1.rdbuf();

  return 0;}



查看完整回答
反对 回复 2019-11-18
?
呼唤远方

TA贡献1856条经验 获得超11个赞

 sizeof(buffer) == sizeof(char*)

请改用长度。

另外,最好使用fopen“ wb”....


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 331 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信