亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

讀寫二進制文件

讀寫二進制文件

C++
慕容708150 2019-09-04 12:04:09
讀寫二進制文件我正在嘗試編寫代碼將二進制文件讀入緩沖區,然后將緩沖區寫入另一個文件。我有以下代碼,但緩沖區只存儲文件中第一行的幾個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), {});}



查看完整回答
反對 回復 2019-09-05
?
慕萊塢森

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;}



查看完整回答
反對 回復 2019-09-05
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

 sizeof(buffer) == sizeof(char*)

請改用長度。

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


查看完整回答
反對 回復 2019-09-05
  • 3 回答
  • 0 關注
  • 539 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號