0

0

c++中如何读取二进制文件_C++二进制文件读写操作方法

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-10-05 22:18:02

|

942人浏览过

|

来源于php中文网

原创

C++通过fstream类操作二进制文件,需包含头文件。1. 用std::ifstream以std::ios::binary模式读取文件,先检查是否打开成功,再用seekg和tellg获取文件大小,分配缓冲区并用read读取数据。2. 写入时使用std::ofstream以binary模式打开,通过write写入原始字节,如整型数组需用reinterpret_cast转换指针类型。3. 可直接读写结构体,但要注意内存对齐和字节序问题,确保跨平台兼容性。4. 始终检查文件状态,及时调用close()释放资源。掌握这些方法即可实现高效二进制文件处理。

c++中如何读取二进制文件_c++二进制文件读写操作方法

在C++中读取和写入二进制文件,主要通过标准库中的 fstream 类来实现。使用时需要包含头文件 #include ,并通过指定模式打开文件来进行二进制操作。

1. 打开二进制文件进行读取

要读取一个二进制文件,需使用 std::ifstream 并以 std::ios::binary 模式打开文件。

示例代码:

#include 
#include 
#include 

int main() { std::ifstream file("data.bin", std::ios::binary);

if (!file) {
    std::cerr << "无法打开文件!" << std::endl;
    return -1;
}

// 获取文件大小
file.seekg(0, std::ios::end);
size_t fileSize = file.tellg();
file.seekg(0, std::ios::beg);

// 分配内存并读取数据
std::vectorzuojiankuohaophpcncharyoujiankuohaophpcn buffer(fileSize);
file.read(buffer.data(), fileSize);

if (file.gcount() != static_castzuojiankuohaophpcnstd::streamsizeyoujiankuohaophpcn(fileSize)) {
    std::cerr << "读取文件时发生错误!" << std::endl;
    return -1;
}

file.close();

// 此处可处理 buffer 中的数据
std::cout << "成功读取 " << fileSize << " 字节。" << std::endl;

return 0;

}

FaceSwapper
FaceSwapper

FaceSwapper是一款AI在线换脸工具,可以让用户在照片和视频中无缝交换面孔。

下载

立即学习C++免费学习笔记(深入)”;

2. 写入数据到二进制文件

使用 std::ofstream 并以 std::ios::binary 模式写入数据。

示例:将整数数组写入二进制文件

#include 
#include 

int main() { int data[] = {10, 20, 30, 40, 50}; int size = 5;

std::ofstream file("output.bin", std::ios::binary);

if (!file) {
    std::cerr << "无法创建文件!" << std::endl;
    return -1;
}

file.write(reinterpret_castzuojiankuohaophpcnconst char*youjiankuohaophpcn(data), size * sizeof(int));
file.close();

std::cout << "数据已写入 output.bin" << std::endl;

return 0;

}

立即学习C++免费学习笔记(深入)”;

3. 读写结构体或自定义类型

二进制文件常用于保存结构体数据。可以直接读写整个结构体对象。

示例:

struct Person {
    char name[50];
    int age;
};

// 写入结构体 Person p = {"Tom", 25}; std::ofstream out("person.bin", std::ios::binary); out.write(reinterpret_cast(&p), sizeof(Person)); out.close();

// 读取结构体 std::ifstream in("person.bin", std::ios::binary); Person p2; in.read(reinterpret_cast(&p2), sizeof(Person)); in.close();

std::cout << "姓名: " << p2.name << ", 年龄: " << p2.age << std::endl;

4. 注意事项

二进制文件操作时需要注意以下几点:

  • 始终检查文件是否成功打开(if (!file))
  • 使用 seekg()seekp() 控制读写位置
  • 注意字节序问题(跨平台时可能不兼容)
  • 结构体可能存在内存对齐,影响文件格式
  • 使用完文件后应调用 close()

基本上就这些。掌握 read、write、seekg、tellg 等基本操作,就能灵活处理大多数二进制文件需求。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

783

2023.08.22

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

262

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

192

2025.07.04

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

52

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

40

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

50

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

11

2026.01.31

漫画防走失登陆入口大全
漫画防走失登陆入口大全

2026最新漫画防走失登录入口合集,汇总多个稳定可用网址,助你畅享高清无广告漫画阅读体验。阅读专题下面的文章了解更多详细内容。

13

2026.01.31

php多线程怎么实现
php多线程怎么实现

PHP本身不支持原生多线程,但可通过扩展如pthreads、Swoole或结合多进程、协程等方式实现并发处理。阅读专题下面的文章了解更多详细内容。

1

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 8.1万人学习

C 教程
C 教程

共75课时 | 4.3万人学习

C++教程
C++教程

共115课时 | 15万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号