3.文件操作----写入和读取二进制文件

136 阅读2分钟

1.文本数据和二进制数据

区别:

文本数据---字符串

string str="131425"; 6字节

整型数据---二进制数据

int ii=131425; 4字节

2.文件操作

写文件:把内存中的数据转移到磁盘文件中

读文件:把磁盘中的文件转移到内存中

内存和硬盘都是存储设备,本质上没有区别

3.文本文件和二进制文件

文本文件:存放文本数据,即字符串,以行的方式组织数据,每个字节都是有意义的符号。

二进制文件:存放的不一定是字符串,以数据类型组织数据,内容要作为一个整体来考虑,单个字节没有意义。

4.写入二进制文件

#include<iostream>
#include<fstream>  //ofstream类包含的头文件
using namespace std;
int main(void)
{
	struct st_girl
	{
		char name[31];   //姓名
		int no;			//编号
		char memo[30];  //备注
		double weight;  //体重
	} girl;

	string filename = R"(C:\Users\10307\Desktop\text\test.dat)";

	ofstream fout;
	//以二进制的方式打开文件,并追加到文件末尾
	fout.open(filename, ios::app | ios::binary);
	if (fout.is_open() == false)
	{
		cout << "打开文件" << filename << "失败" << endl;
	}
	else
	{
		girl = { "xishi",34,"the first beauty of china",54 };
		//使用输出流的write函数
		fout.write((const char*)&girl, sizeof(girl));
	}
	fout.close();
	cout << "Operate Finished!!!" << endl;
	return 0;
}

5.读取二进制文件

5.1二进制文件的格式

二进制文件的格式多样,由业务需求决定

程序员自定义的二进制文件格式,只有程序员自己知道

通用的二进制文件格式:mp3,mp4,bmp(位图),jpg,png

5.2文本文件和二进制文件优缺点

文本文件:由可显示的字符组成,方便阅读源码,占用空间较多
二进制文件:由0,1组成,组织数据的格式与文件用途有关,不方便读源码
           占用空间少,也会采用压缩或者加密技术。

5.3 读取源码

#include<iostream>
#include<fstream>  //ifstream类包含的头文件
using namespace std;
int main(void)
{
	struct st_girl
	{
		char name[31];   //姓名
		int no;			//编号
		char memo[30];  //备注
		double weight;  //体重
	} girl;

	string filename = R"(C:\Users\10307\Desktop\text\test.dat)";

	ifstream fin;
	//以二进制的方式打开文件,并追加到文件末尾
	fin.open(filename, ios::in | ios::binary);
	if (fin.is_open() == false)
	{
		cout << "打开文件" << filename << "失败" << endl;
	}
	else
	{
		
		//使用输出流的read函数
		while (fin.read((char*)&girl, sizeof(girl)))
		{
			cout << girl.name << girl.no << girl.memo << girl.weight << endl;
		};
	}
	fin.close();
	cout << "Operate Finished!!!" << endl;
	return 0;
}