【发布时间】:2014-06-29 07:21:24
【问题描述】:
我目前正在学习 C++,尽管我在理解如何使用输入和输出文件流实现程序的面向对象风格时遇到了麻烦。我已经使用操作重载方法作为朋友类制作了一个程序,尽管这显然是一种不好的做法,因为它违反了类的隐私。
在某些情况下,我需要编写一个程序来读取包含学生姓名、ID、成绩日期等的 csv 文件。这个文件的读取将进入我假设的注册课程。注册将有一个成员 ifstream infile;以及在构造函数中指定的文件的名称。然后这个类将有一个功能,这是我卡住的地方。我正在尝试读取文本文件并将文件的元素分配给对象实例的变量。例如,学生 1 有 3 门课程/单元,每个单元都有一个成绩。因此,我将为该学生存储 3 个结果(在结果类中),然后增加到文本学生并阅读他们的课程和成绩。注意:每个学生和课程信息都在文件的一行中。
基本上我的问题是我应该如何尝试将文件流中的信息存储到另一个类的对象中,例如:结果类或课程类?如果我需要将数据存储在 Unit 类甚至 Date 类是 Results 类的聚合对象的位置怎么办?最初使用集合和获取是合乎逻辑的,但它是否正确。我不是要求代码,而是更多面向 OO 和文件流的最佳实践。
【问题讨论】:
-
一旦被存储的对象的类型偏离了单一的基础,我希望很明显,一种或另一种形式的类型识别最好是序列化的一部分。
标签: c++ file oop stream ifstream