100字节的数据,保存在文档中,为甚麽会产生1KB?

100字节的数据,保存在文档中,为甚麽会产生1KB?

#include<fstream>
#include<iostream>
using namespace std;
struct person
{
    char name[20];//1
    int age;//4
    char sex;//1
};
int main()
{
    person stud[4] = { "jack", 18, 'M', "John", 19, 'M', "Mary", 17, 'F', "Make",50,'F' };

图片说明
定义一个person,25个字节。定义四个,应该是100个字节。就如图所示。为啥图片会这样显示。那位高人知道?

windows就是这么显示的。你看我这个文件才83字节,还不是显示1KB
图片说明

应该是windows这货显示的最小单位是K,除了0字节外,就至少得显示1K了

这与操作系统和硬盘的格式化簇大小有关:
在操作系统上,任何小于1KB的文件,都会显示为1KB
就算存放一个字节,也会显示为1KB,除非文件里一个字节都没有,才会显示为0字节

另一个与硬盘格式化簇大小有关:
硬盘上的簇大小一般有8字节、16字节、32字节、64字节、512字节、1024字节、4096字节,一直到64KB等十多种规格
主要方便读取硬盘上的文件,便于一个簇一个簇的读取
在格式化硬盘时,要设置簇大小,如果不设置,以前默认为8字节,现在默认为4096字节
设置8字节,存储效率高,但读取效率低,适合中小容量硬盘
而4096字节则相反,存储效率低,但读取效率高,适合大容量硬盘

在显示文件大小时,一般有两种查看方法:
一种是详细信息列表查看法,就是你图中显示的那种,存储小于1KB的文件,都以1KB显示,大于1KB的文件,以1KB整数倍往上加

另一种查看方法为属性法,用鼠标右健打开文件属性

“大小”项显示的是实际存储字节
括号中显示的为真实字节,括号前面显示的为1000=1KB=1024字节,这是硬盘的计算方法,一般会比实际字节要小一点

“占用空间”项则以簇为单位
如果格式化时选择的是4096字节,存储的内容在4,096字节以下,则会显示4.00KB(4,096字节)
如果你存储的是4,097字节,注意,多了一个字节,则会显示8.00KB(8,192字节),以此类推
图片说明