C++怎么把文件中的数据读入到对象数组中呢?

类consumer
{private:char passwd[];
public:char num[];float money;}不要求文件中数据的排布。
谢谢大佬了。不需要太复杂,偏C语言些。再次感谢。

对象私有数据成员的赋值需要通过公有成员函数,为了简单些、偏C语言些,进行了简化,参考代码如下:

#include "stdio.h" 

class consumer{

public:

char num[10];

char passwd[10];

float money;

} t,c[5];

int main()

{

    FILE *fp;

    int i;

    fp=fopen("consumers.data","wb");

    if(fp==NULL) {

        printf("error\n");

        return 0;

    }

    for(i=0; i<5; i++){

    printf("请输入客户号、密码、金额:(以空格隔开、最后以回车结束)\n");

    scanf("%s%s%f%*c",t.num,t.passwd,&t.money);

    //注意输入格式为:字符串 空格 字符串 空格 浮点数 回车 

    fwrite(&t, sizeof(consumer), 1, fp);

    }

    fclose(fp);

    

    fp=fopen("consumers.data","rb");

    if(fp==NULL) {

        printf("error\n");

        return 0;

    }

    printf("文件读入结果如下:\n");

    fread(c,sizeof(consumer),5,fp);

    for(i=0; i<5; i++){

printf("%s %s %.2f\n",c[i].num,c[i].passwd,c[i].money);

    }

    fclose(fp);

    return 0;

}

追问

类的私有成员怎么赋值呢?
若是先读入到另一盒字符串,再用类给私有成员赋值的函数给私有成员赋值,会不会破坏私有成员的安全性呢?

追答

文件块读写是过程化例程,把类当做了普通结构体,会对私有成员进行修改(会破坏安全性);
通过调用成员函数修改私有数据成员是C++类和对象一章最基本的,你再看看书好吧。。。

追问

。。。。。

就是说不能对私有成员文件读写啊!

好吧,谢谢大佬

追答

文件块读写只针对数据块,具体是什么保护属性是在类机制中约束的,二者根本就是两码事,所以要求你自己注意安全性。。。

温馨提示:答案为网友推荐,仅供参考
相似回答