我正在使用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条记录的表格。但这需要更多时间。如何提高此任务的效率?