c ++中的固定长度平面文件表算法

时间:2014-12-08 14:04:04

标签: c++ algorithm flat-file fixed-length-record

我正在使用c ++中的平面文件进行表处理的简单项目。我有两种类型的文件来访问表数据。 1)索引文件。 (employee.idx) 2)表文件。 (employee.tbl)

在索引文件中,我有制表符分隔格式的表格详细信息。即, 列名列型列偏移列大小

例如,employee.idx

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

在Table文件中,我的数据格式为Fixed Length。 例如,employee.tbl

first     25Address0001
second    31Address0002

在这里,我将解释我在我的程序中所做的算法。

1)首先,我使用fstream在2D矢量字符串(索引矢量)中加载了索引文件数据。

2)这是我将表文件数据加载到2D

的代码
while (fsMain)
{

    if (!getline( fsMain, s )) break;

    string s_str;

    for(size_t i=0;i<idxTable.size();i++)

    {
        int fieldSize=stoi(idxTable[i].at(3));

        string data (s,stoi(idxTable[i].at(2)),fieldSize);

        string tmp=trim_right_inplace(data);

        recordVec.push_back( tmp );

    }

    mainTable.push_back(record);


    recordVec.clear();  

    s="";
}

确定。现在我的问题是,“还有其他更好的方法可以将固定长度数据加载到内存中吗?”。我检查了这个过程60个表,200个记录。这需要将近20秒。但是我希望在一秒钟内加载100个包含200条记录的表格。但这需要更多时间。如何提高此任务的效率?

0 个答案:

没有答案