C++文件操作-二进制文件-读文件

cpp 复制代码
#include<iostream>

//1、包含头文件 fstream
#include<fstream>
using namespace std;

class Person
{
public:
	char m_Name[64];//姓名
	int m_Age;//年龄
};

void test01()
{
	//2、创建流对象
	ifstream ifs;
	//3、打开文件 判断文件是否打开成功
	ifs.open("person.txt", ios::in | ios::binary);
	if (!ifs.is_open())
	{
		cout << "文件打开失败了";
		return;
	}
	//4、读文件
	Person p;
	ifs.read((char*)&p, sizeof(Person));
	cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;
	//5、关闭文件
	ifs.close();
}
int main() {
	test01();
	system("pause");
	return 0;
}

test01 函数

cpp 复制代码
void test01()
{
    ifstream ifs; // 创建输入流对象
    ifs.open("person.txt", ios::in | ios::binary); // 以二进制读取的方式打开文件 "person.txt"
    
    if (!ifs.is_open())
    {
        cout << "文件打开失败了" << endl;
        return;
    }
    
    Person p; // 创建一个 Person 对象 p,用于存储读取的数据
    
    // 从文件中读取一个 Person 对象的数据
    ifs.read((char*)&p, sizeof(Person));
    
    // 输出读取到的姓名和年龄
    cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;
    
    ifs.close(); // 关闭文件流
}
  • ifstream ifs;:创建一个输入文件流对象 ifs
  • ifs.open("person.txt", ios::in | ios::binary);:以二进制读取的方式打开文件 "person.txt"。使用 ios::in 表示读取操作,ios::binary 表示以二进制形式读取文件。
  • if (!ifs.is_open()) { ... }:检查文件是否成功打开,如果未成功打开,则输出错误信息并返回。
  • Person p;:创建一个 Person 类型的对象 p,用于存储从文件中读取的数据。
  • ifs.read((char*)&p, sizeof(Person));:使用 read() 方法从文件中读取 sizeof(Person) 字节的数据,并将其存储在 p 对象中。(char*)&p 是将 p 的地址转换为 char* 类型,以便 read() 方法能够将二进制数据直接写入 p
  • cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;:输出读取到的 Person 对象的姓名和年龄。
  • ifs.close();:关闭文件流,确保读取操作完成并释放相关资源。
相关推荐
猫猫头有亿点炸17 分钟前
C语言之九九乘法表
c语言·开发语言
问道飞鱼29 分钟前
【Vue3知识】组件间通信的方式
开发语言·javascript·ecmascript·组件·通信
永不停转32 分钟前
C++宏定义中可变参数列表__VA_ARGS__ 及 QT 提供的宏 QT_OVERLOADED_MACRO
c++·qt
树下水月38 分钟前
关于使用python 安装 flask-openapi3扩展,使用docker 环境的完整复盘
开发语言·python·flask
时雨h39 分钟前
《Spring Boot+策略模式:企业级度假订单Excel导入系统的架构演进与技术实现》
开发语言·bash
程序员JerrySUN1 小时前
驱动开发硬核特训 · Day 1
java·linux·运维·开发语言·c++·驱动开发
明明明h1 小时前
C#网络编程(Socket编程)
开发语言·网络·c#
爱写代码的小朋友1 小时前
PHP+Vue 3实现增删改查(CRUD)
开发语言·vue.js·php
Vitalia1 小时前
⭐算法OJ⭐数据流的中位数【最小堆】Find Median from Data Stream
数据结构·c++·算法·最小堆
我真的不会C1 小时前
Qt中的信号与槽及其自定义
开发语言·qt