吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1156|回复: 24
收起左侧

[求助] 小白请教 文件怎么导入到未满的C++结构体数组中

[复制链接]
西月 发表于 2021-7-7 14:14
本帖最后由 西月 于 2021-7-7 14:27 编辑

语言表达不足,直接打代码了,希望有大佬指导

#include<iostream>
#include<fstream>
using namespace std;
struct number
{
        string name;
        int age;
};


int main()
{
        number a[5] = { {"张三",12},{"李四",15} };
        ofstream outfile;
        outfile.open("a.txt", ios::out | ios::binary);
        if (!outfile)
        {
                cerr << "打开文件失败" << endl;
                exit(1);
        }
        for (int i = 0; i < 2; i++)
                outfile.write((char*)&a, sizeof(a));
        outfile.close();

        ifstream infile;
        infile.open("a.txt", ios::in | ios::binary);
        if (!infile)
        {
                cerr << "文件打开失败" << endl;
                exit(1);
        }
        for (int i = 0; i < 5; i++) {
                infile.read((char*)&a, sizeof(a));
                cout << a.name << '\t' << a.age << endl;
        }
}


用VS2019写的,最后运行是这样,有没有办法让它根据本来的文本中的人数来导入数据,比如文本中五个,就全部导入,四个就导入四个。
如果文件中名字数是未知的,有没有办法让它根据文件中de人数来导入相应的数据,因为后面还要再计数到底导入了几个
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
diaozatian815 发表于 2021-7-7 14:30
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 西月 发表于 2021-7-7 14:42
diaozatian815 发表于 2021-7-7 14:30
第一最简单的再循环输出的地方添加一个判断。
第二那就是拿的时候就判断~!
if(a.age == 0)

那如果有人就是零岁呢?这种情况爱怎么处理呢?
头像被屏蔽
diaozatian815 发表于 2021-7-7 14:43
 楼主| 西月 发表于 2021-7-7 14:45
diaozatian815 发表于 2021-7-7 14:43
那就判断名字啊。。。不一定要判断年龄。。。有名字就有年龄。没有就是废值。不展示

判断名字不等于零吗?
头像被屏蔽
diaozatian815 发表于 2021-7-7 14:45
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 西月 发表于 2021-7-7 14:49
diaozatian815 发表于 2021-7-7 14:45
0.0...判断名字不等于空不就好了~~!
不等于0就要判断长度

不等于空是什么啊?我只打空格或者打‘’里面加空格都不行,我是不是没救了
头像被屏蔽
diaozatian815 发表于 2021-7-7 14:51
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 西月 发表于 2021-7-7 14:53
diaozatian815 发表于 2021-7-7 14:51
....
if(a.name!="")
或者if(a.name。size()!= 0)

好了,谢谢,非常感谢!
autumoon 发表于 2021-7-7 15:01
你这个属于设计问题。
1.在最开始存入对象的时候,就应当存入对象的个数,方便后来读取。
2.如果你执意不存入个数,那么后面读取的时候,有个办法就是分行存储对象,这样读取多少行就认为读取了多少个对象。
3.如果你连分行存储也不愿意,那么就只能按照你的方法读取,然后在读取到文件末尾(eof)的时候,判断读入结束。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 01:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表