c++学习笔记-二进制文件操作(哔站-黑马程序员c++教学视频)

一、基本概念

以二进制的方式对文件进行读写操作

打开方式指定为  ios::binary

优点:可以写入自己定义的数据类型

1、写文件

二进制方式写文件:流对象调用成员write

  • 函数原型:ostream& write(const char * buffer,int len);
  • 参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数
  • 写文件步骤:包含头文件-->创建数据流-->打开文件-->ofs.write写文件-->关闭文件

注意ofs.write(const char * buffer,int len),这里需要的buffer的数据类型const char * !!!(强转)

2、读文件

二进制读文件:流对象调用成员函数read

  • 函数原型:istream& read(char *buffer,int len);
  • 参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数
  • 读文件步骤:包含头文件-->创建数据流-->打开文件-->ofs.read读文件-->关闭文件

注意ifs.write(char * buffer,int len),这里需要的buffer的数据类型char * !!!(强转)

二、代码实现

1、写文件

#include<iostream>
using namespace std;
#include<fstream>

//二进制文件 写文件

class Person
{
public:
	char m_Name[64];//姓名
	int m_Age;//年龄
};
void test01()
{
	//1、包含头文件fstream

	//2、创建流对象
	ofstream ofs("D:\\C++\\c++class\\第二部分\\file\\person.txt", ios::out | ios::binary);

	//3、打开文件
	//ofs.open("D:\\C++\\c++class\\第二部分\\file\\person.txt",ios::out|ios::binary)

	//4、写文件
	Person p = { "Susan",18 };
	ofs.write((const char*)&p, sizeof(Person)); //p取地址& p;但是要求const char *;所以强转(const char*)&p

	//5、关闭文件
	ofs.close();

}

int main()
{
	test01();
	system("pause");
	return 0;
}

2、读文件

#include<iostream>
using namespace std;
#include<fstream>

//二进制文件 读文件
class Person
{
public:
	char m_Name[64];//姓名
	int m_Age;//年龄
};
void test01()
{
	//1、包含头文件fstream

	//2、创建流对象
	ifstream ifs("D:\\C++\\c++class\\第二部分\\file\\person.txt", ios::in | ios::binary);

	//3、打开文件
	//ifs.open("D:\\C++\\c++class\\第二部分\\file\\person.txt",ios::out|ios::binary)

	//判断文件是否打开成功
	if (!ifs.is_open())
	{
		cout << "文件打开失败" << endl;
		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;
}

猜你喜欢

转载自blog.csdn.net/qq_26572229/article/details/129012759