3
已解决
薛乘志
初级启示者
初级启示者
平常我们写文件输入,都是用的10进制表示数字
如数字12345678就直接输出成字符串“12345678”
但是这样其实是十分浪费空间的,因为int类型占用4个字节的空间,而字符串“12345678”则占用了8个字节!
如果我们将int的4个字节拆成4个字符直接存进文件内,不就行了嘛
头文件:
#include <fstream>
using namespace std;
使用:
输出:
int number = 1145141919;
ofstream bout("文件名称", ios::binary); //定义二进制文件流对象
bout.write((const char *)&number, sizeof(number)); //写入二进制数据
输入:
int number;
ifstream bin("文件名称", ios::binary); //定义二进制文件流对象
bin.read((char *)&number, sizeof(number)); //读入二进制数据
用这种方式,还能让struct的输入更加便捷
struct player{
char name[11];
int score;
int level;
....
}p;
正常输入肯定是cin>>p.name>>p.score>>p.level......
然而用二进制输入输出就是:
bin.read((char *)&p, sizeof(p));
Ok!!!输出同理
(注:输出的结构体内字符串必须使用字符数组(char []),不能使用string和指针(char*);而且字符串的二进制和非二进制空间占用完全一致,无需使用二进制输入输出)
薛乘志在2022-07-27 12:41:09追加了内容
谁回一下啊,我不想采纳刘意阳