问题标题: 二进制存储数据文件

3
1
已解决
薛乘志
薛乘志
初级启示者
初级启示者

平常我们写文件输入,都是用的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追加了内容

谁回一下啊,我不想采纳刘意阳


0
0
0
0
0
刘意阳
刘意阳
初级天翼
初级天翼

你怎么这么NB,这些在哪儿搜到的?求网址

我要回答