分块读取文件

#include <iostream>
#include <fstream>
#include <cstdint>
#include <cmath>

int main() {
   std::ifstream file1("file1.bin", std::ios::binary);
   std::ifstream file2("file2.bin", std::ios::binary);

   if (!file1.is_open() || !file2.is_open()) {
       std::cerr << "Error opening file(s)" << std::endl;
       return 1;
   }

   const size_t bufferSize = 1024; // 你可以根据你的内存情况调整这个值
   uint8_t buffer1[bufferSize];
   uint8_t buffer2[bufferSize];

   size_t totalBytes = 0;
   double totalError = 0.0;

   while (true) {
       file1.read(reinterpret_cast<char*>(buffer1), bufferSize);
       file2.read(reinterpret_cast<char*>(buffer2), bufferSize);

       size_t bytesRead = file1.gcount();
       if (bytesRead == 0) break;

       for (size_t i = 0; i < bytesRead; ++i) {
           totalError += std::abs(buffer1[i] - buffer2[i]);
       }

       totalBytes += bytesRead;
   }

   double mae = totalError / totalBytes;
   std::cout << "Mean Absolute Error: " << mae << std::endl;

   return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容