我有几个类是我从文件读取/写入文件的各种数据的容器。通常文件每行有一个实体(逗号分隔的字段),但有时一个实体分散在几行中。
我正在尝试提出一种正确的方法来重用代码读取和写入文件。我可以在每个处理 fstream、所有检查和字符串格式的类中使用单独的 Read() 和 Write() 函数,但我觉得应该有更好的方法来重用一些代码。
编辑:
我意识到我对我的问题不够具体。阻止我按照某些答案/评论建议的方式实施它的原因是我有多行实体。所以,我不能只将从文件中读取的一行传递给一个类来解析它。有时我需要通过几行。
当一个实体是多行时,通常它在行首有一个 id 字段,所以重复 id 意味着我需要读取几行。
例如,一个文件可以是一个多边形,然后每行有两个坐标,这种情况很简单。但是另一个文件可以是一组多边形,然后它会有一个多边形 id 加上每行中的两个坐标。像那样:
id, x, y
0, 1, 2
0, 5, 0
0, -1, -1
1, 4, 4
1, 0, 8
1, -4, 4
1, 0, 0
编辑2:
当我在第一次编辑中描述我的问题时,我意识到如何处理我的多行实体。我仍然可以将读取的行一一传递给每个类,并使其填充未完成的实体。现在这对我来说似乎很明显,因为只要我尝试向其他人解释,问题就会变得清晰。感谢您的意见!