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++类和对象一章最基本的,你再看看书好吧。。。

追问

。。。。。

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

好吧,谢谢大佬

追答

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

温馨提示:内容为网友见解,仅供参考
无其他回答

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("...

如何用C++对一个文本文档里面的许多数据进行逐行读取,并放入数组中
推荐使用文件流来读取。如果你的数据是用空格、制表符和换行符来分隔的,那么程序可以写的很简单。直接逐行用fin就可以了。如果你的数据是用逗号或者其他字符来分隔,用换行来分行的,那么你需要在循环中写入两次读入,第一次用于读入数据,第二次用于跳过字符。如果数据中间的分隔字符是不规范、不一致、...

请问C++ 如何从txt文件中读取数据,然后保存在类的数组中?
while(!File_read.eof()){ File_read>>data[i].num>>data[i].name>>data[i].score;i++;} 数组data是的类型是信息类。自己试试。

C++ 从TXT文件中读取数据存到数组中??你是怎么解决的谢谢
文件中读取数据存到数组中的命令:include <fstream> void main()nclude <stdio.h> include <math.h> define MaxLength { int a[10];ifstream fin("D:\/我的输入文件.txt");for(int i=0;i<10;i++)fin>>a[i];for(int i=0;i<10;i++)cout<<a[i]<<endl;ofstream fout("D:\/我的...

C++编程读取TXT数据,将其赋值到数组,而后进行计算
最简单的方式是用freopen,使用了这个函数之后所有的cin\/cout就会从文件中读出或者写入,或者也可以用fstream;include <iostream>#include <cstdio>#define maxn 10000using namespace std;struct m{ int x; int y; int z;}a[maxn];int main(){ freopen("\/*文件名*\/","r"\/*代...

C++怎么读取文件中的几个数字在将它们储存给相应的变量
比如在exe的当前文件夹的txt文档读取内容。include<iostream> #include<fstream> using namespace std; int main() { ifstream fin("in.txt"); int a; fin>>a; cout<<a<<endl; return 0; }

C++怎么读取指定TXT文档数据存入数组中
freopen("文件路径名","r",stdin);int case = 3, A, B;double a[3][3][3];scanf("A=%lf B=%lf",&A,&B);while(case--){ for(i = 0;i < 3;i ++){ for(j = 0;j < 3;j++){ for(k = 0;k < 3;k++){ scanf("%lf",&a[i][j][k]);} } } } ...

c++中怎么把读取文件夹下的所有文件名存入数组
while((ptr = readdir(dir)) != NULL) \/\/循环读取目录数据 { printf("d_name : %s\\n", ptr->d_name); \/\/输出文件名 strcpy(file_list[i],ptr->d_name ); \/\/存储到数组 if ( ++i>=100 ) break;} closedir(dir);\/\/关闭目录指针 } 2、在windows平台下,如VC也有类似的操作函数...

c++ 从txt文件读取的数据 怎么放在结构体数组里 并让这个结构体数组 作 ...
ab在赋值前加上 ab=new Person 你是对未分配内存空间的变量赋值就会引发写入冲突 下面的for循环改成for (int i = 0; i < count; i++)因为你读取的数据不一定有100个 如果少了 就会出现读取位置0x000时发送访问冲突

C++如何一行一行读取txt文件中数据并存入相应数组?
循环读入。c 程序 可作为 c++程序。include<iostream> include<fstream> using namespace std;include <stdio.h> main(){ int x[5],y[5];int i;FILE *fp;fp=fopen("sk.txt","r");for (i=0;i<5;i++) fscanf(fp,"%d",&x[i]);for (i=0;i<5;i++) fscanf(fp,"%d",&y[i...

相似回答