固定长度平面文件解析

时间:2016-02-01 14:13:40

标签: c++ arrays vector flat-file

我有一个平面文件表,例如student.tbl和employee.tbl。两个文件都是固定长度的文件。我有两个文件的支持文件,包括信息字段代码,字段描述,字段偏移和字段大小。

例如,

ename string 0 10
eage number 10 2
ecity string 12 10

我编写了代码,用c ++中的STL从平面文件中获取数据。我正在使用vector来加载这些数据。

我从固定长度文件加载数据的简单算法。

  

1)阅读支持文件。

     

2)将支持文件数据加载到2D矢量字符串中,例如,   column_records;

     

3)读取表文件。

     

4)从表格文件中获取第一行,比如数据行。

     

5)从支持表中获取第一列信息   column_records的第一行。

     

6)根据column_record

切断数据线      

7)将切碎的数据推入一维向量中,   record_vector。

     

8)执行步骤5,直到最后一列信息处理完毕。

     

9)将record_vector推送到2D矢量,例如Table_Vector。

     

10)执行步骤4,直到固定文件的最后一行到达。

好。我做得很好。它工作正常。但我的问题是,在第5步。

对于每个固定长度的数据,我觉得有一些重复的迭代。 我知道,第一固定长度数据本身可以保留其他固定长度数据的列描述。但我反复做Iteration N * M.我希望我的迭代应该是1 * M.

我知道我可以将列描述存储在Structure数组中。但我有很多类型的表。 say students.tbl和employee.tbl。两者都有不同的列。因此,我认为让N' -struct声明加载N'支持表格是不错的主意。

我希望使用相同的例程从两个表中获取数据或者' N'表。我的支持表格式不会更改。它采用制表符分隔格式。这是我的情况。

如何通过1 * M迭代从表中获取数据?

我希望我可以使用枚举来做到这一点。但我不知道该怎么做?将使用枚举或宏来解决这个问题?

我希望本课题不需要我的工作源代码。如果您认为需要源代码来回答这个问题,我肯定会用该源代码更新此问题。我有中等水平的英语知识。很抱歉给您带来不便。

谢谢。

0 个答案:

没有答案