读写二进制文件我正在尝试编写代码将二进制文件读入缓冲区,然后将缓冲区写入另一个文件。我有以下代码,但缓冲区只存储文件中第一行的几个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), {});}
三国纷争
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;}
- 3 回答
- 0 关注
- 331 浏览
添加回答
举报
0/150
提交
取消