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;
}