全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++如何读取二进制文件_C++ fread与binary模式读写文件教程

使用fread和fwrite可高效进行C风格二进制文件读写,适用于原始字节操作;2. 示例展示用fwrite将整数数组写入data.bin,再用fread读取至缓冲区并验证读取数量。

在C++中读取二进制文件,常用的方法包括使用C标准库的fread函数配合FILE*指针,以及C++标准库中的fstream以binary模式操作。这两种方式各有适用场景,下面详细介绍如何用它们进行二进制文件的读写。

fread与fwrite:C风格的二进制读写

使用freadfwrite是处理二进制数据最直接的方式之一,适用于需要高效读写原始字节的场景。

基本语法:

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
  • ptr:指向内存缓冲区的指针,用于存放读取的数据或提供要写入的数据。
  • size:每个数据项的字节数。
  • count:最多读/写的项目数量。
  • stream:文件指针。

示例:写入一个整数数组到二进制文件

#include

int main() {
    int data[] = {10, 20, 30, 40, 50};
    FILE* fp = fopen("data.bin", "wb"); // 以二进制写模式打开
    if (fp) {
        fwrite(data, sizeof(int), 5, fp);
        fclose(fp);
    }
    return 0;
}

示例:从二进制文件读取整数数组

#include
#include iostream>

int main() {
    int buffer[5];
    FILE* fp = fopen("data.bin", "rb"); // 以二进制读模式打开
    if (fp) {
        size_t result = fread(buffer, sizeof(int), 5, fp);
        if (result == 5) {
            for (int i = 0; i                 std::cout             }
        } else {
            std::cerr         }
        fclose(fp);
    }
    return 0;
}

注意打开文件时使用"rb""wb",确保以二进制模式操作,避免文本模式对换行符等字符的自动转换。

fstream以binary模式读写文件

C++推荐使用std::ifstreamstd::ofstream进行文件操作,支持binary模式,更符合C++风格。

写入二进制文件示例:

#include

int main() {
    int data[] = {100, 200, 300, 400};
    std::ofstream out("output.bin", std::ios::binary);
    if (out) {
        out.write(reinterpret_cast(data), sizeof(data));
        out.close();
    }
    return 0;
}

读取二进制文件示例:

#include
#include

int main() {
    int buffer[4];
    std::ifstream in("output.bin", std::ios::binary);
    if (in) {
        in.read(reinterpret_cast(buffer), sizeof(buffer));
        if (in.gcount() == sizeof(buffer)) {
            for (int i = 0; i                 std::cout             }
        } else {
            std::cerr         }
        in.close();
    }
    return 0;
}

read()write()函数操作的是原始字节,必须将指针转为char*类型,并注意大小端问题(跨平台时需额外处理)。

注意事项与常见问题

  • 始终检查文件是否成功打开,避免空指针访问。
  • 二进制文件不可用文本编辑器查看,可用hex工具验证内容。
  • 结构体直接读写时要注意内存对齐和跨平台兼容性,建议序列化处理。
  • 读取后使用gcount()确认实际读取的字节数,判断是否读完或出错。
  • 关闭文件是良好习惯,防止资源泄漏。

基本上就这些。fread和fstream binary模式都能有效处理二进制文件,选择取决于你偏好C还是C++风格。关键在于正确指定binary标志并安全操作内存。


# c++  # 字节  # ai  # ios  # stream  # 标准库  # if  # count  # for  # include  # fopen  # fclose  # const  # int  # void  # 指针  # fstream  # 适用于  # 的是  # 最多  # 都能  # 推荐使用  # 详细介绍  # 各有  # 再用  # 时要  # 这两种 


相关文章: 网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  兔展官网 在线制作,怎样制作微信请帖?  山东云建站价格为何差异显著?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何快速生成橙子建站落地页链接?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  ,网站推广常用方法?  如何选择网络建站服务器?高效建站必看指南  如何通过IIS搭建网站并配置访问权限?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  如何在云主机快速搭建网站站点?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  专业网站建设制作报价,网页设计制作要考什么证?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  seo网站制作优化,网站SEO优化步骤有哪些?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  建站之星如何一键生成手机站?  如何通过PHP快速构建高效问答网站功能?  宝塔面板如何快速创建新站点?  建站主机选购指南:核心配置与性价比推荐解析  盐城做公司网站,江苏电子版退休证办理流程?  表情包在线制作网站免费,表情包怎么弄?  如何通过VPS建站实现广告与增值服务盈利?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何在橙子建站上传落地页?操作指南详解  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  存储型VPS适合搭建中小型网站吗?  历史网站制作软件,华为如何找回被删除的网站?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  建站主机数据库如何配置才能提升网站性能?  西安专业网站制作公司有哪些,陕西省建行官方网站?  网站制作难吗安全吗,做一个网站需要多久时间?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  网站制作大概多少钱一个,做一个平台网站大概多少钱?  全景视频制作网站有哪些,全景图怎么做成网页?  图册素材网站设计制作软件,图册的导出方式有几种?  活动邀请函制作网站有哪些,活动邀请函文案?  如何在七牛云存储上搭建网站并设置自定义域名?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  建站之星免费版是否永久可用?  制作营销网站公司,淘特是干什么用的?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  上海网站制作开发公司,上海买房比较好的网站有哪些?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  实例解析Array和String方法  企业微网站怎么做,公司网站和公众号有什么区别?  如何选择建站程序?包含哪些必备功能与类型?  香港服务器选型指南:免备案配置与高效建站方案解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。