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