讀寫二進制文件我正在嘗試編寫代碼將二進制文件讀入緩沖區,然后將緩沖區寫入另一個文件。我有以下代碼,但緩沖區只存儲文件中第一行的幾個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貢獻1809條經驗 獲得超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貢獻1810條經驗 獲得超4個贊
這是一個簡短的例子,使用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 關注
- 539 瀏覽
添加回答
舉報
0/150
提交
取消