HM155 职工档案落盘
HM155 职工档案落盘
来源: 第 155 集 职工管理系统-文件交互-写文件
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
刚添加的职工若只挂在堆区,程序一结束堆内存就会被释放,下次打开就全没了。因此添加成功后必须把数据写到磁盘做持久化。堆区数据最好在析构函数里手动释放。
请实现管理类的保存接口 save(),并遵守下列规则:
- 包含
<fstream>。用宏常量指定档案名,宏名自定,内容必须是empFile.txt。 - 创建
ofstream对象,以ios::out写出方式打开该文件(写出就等于写文件;这种方式会覆盖旧内容)。 - 按当前记录人数循环:把第 \(i\) 名职工的编号、姓名、部门编号依次写入,**属性之间用空格分隔**,写完一个人换一行。
- 写完后
close关闭文件。 - 添加成功后调用
save()(放在提示前或提示后都可以)。
本题在读入全部职工后调用一次 save(),再析构管理对象、释放堆区。然后重新打开 empFile.txt,按文本方式读回并输出,以证明数据已经在文件里,而不是还活在内存中。
输入格式
第一行一个整数 \(n\)(\(1 \le n \le 100\))。
接下来 \(n\) 行,每行一个整数编号 \(id\)、一个不含空白的姓名 \(s\)、一个整数部门编号 \(d\)(\(1 \le id \le 10^6\),\(1 \le |s| \le 20\),\(1 \le d \le 3\))。
输出格式
共 \(n\) 行,必须来自读回的 empFile.txt。每行三个字段,用单个空格分隔:编号、姓名、部门编号,行末换行。顺序与写入顺序相同。
样例
输入 #1
1
1 张三 1
输出 #1
1 张三 1
输入 #2
3
1 ZhangSan 1
2 LiSi 2
3 WangWu 3
输出 #2
1 ZhangSan 1
2 LiSi 2
3 WangWu 3
说明
- 一个人占一行,三个属性用空格分开,这既方便写,也方便以后用
>>读回来。 ios::out会整文件重写,不是追加;一次save()应写出当前内存中的全部职工。- 评测检查的是文件读回结果。只在内存里
cout、不写文件会无法通过。
信息
- ID
- 1154
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 2
- 已通过
- 1
- 通过率
- 50%
- 上传者