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;

}

如此AI员工
如此AI员工

国内首个全链路营销获客AI Agent

下载

立即学习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 等基本操作,就能灵活处理大多数二进制文件需求。

相关专题

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

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

757

2023.08.22

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

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

197

2025.06.09

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

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

190

2025.07.04

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

37

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

18

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

233

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

61

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

14

2026.01.21

热门下载

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

精品课程

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

共94课时 | 7.3万人学习

C 教程
C 教程

共75课时 | 4.2万人学习

C++教程
C++教程

共115课时 | 13.3万人学习

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

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