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

标签 c++ parsing optimization io bigdata

我有一个几千兆字节大的文件,有数百万行。每行都有这样分隔的数据:

string TAB int TAB int TAB int NEWLINE

由于 CPU 而不是我的 SSD 的写入速度,我之前尝试逐行读取此内容时遇到了瓶颈。

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

注意:文件太大,无法一次全部解析成 vector 。

在我的原始代码中,我将数据解析为这样的结构 vector

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

最佳答案

使用你的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
}

这么慢吗?

关于c++ - 在 C++ 中快速解析制表符分隔的字符串和整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39184853/

相关文章:

c++ - 无法删除不需要的重载

c++ - 现代 C/C++ 编译器能否更好地优化 header 中的代码?

c++ - 在 std::function 和 lambda 中使用自动说明符

c++ - 更新到 MFC 功能包

ios - 使用 AFNetworking 解析 JSON

c# - 将无效日期处理为有效日期?

java - java中GMT解析的意外结果

python - 快速 numpy addnan

php - 在 PHP 中复制或不复制额外的变量?

c++ - 如何计算 OpenCV 中矩阵的直方图?