在c ++中快速解析以制表符分隔的字符串和整数

时间:2016-08-27 19:20:11

标签: c++ parsing optimization io bigdata

我有一个几千兆字节的文件,并且有数百万行。每行都有如下数据分隔:

string TAB int TAB int TAB int NEWLINE

我之前尝试逐行读取这个因为CPU而不是我的SSD的写入速度而导致瓶颈缩颈。

如何逐行快速解析大量文件?

注意:文件无法一次性解析为矢量,因为它们太大了。

在我的原始代码中,我将数据解析为结构的向量

struct datastruct {
    std::string name;
    int year;
    int occurences;
    int volcount;
};
std::vector<datastruct> data;

1 个答案:

答案 0 :(得分:2)

使用datastruct,您可以

std::ifstream file;
datastruct data;
while (file >> data.name >> data.year >> data.occurences >> data.volcount)
{
    // do what you want with data, its contents will be replaced during next iteration
}

这样慢吗?