首页 > 解决方案 > 如何更快地读取文本文件并使用标记器处理数据?

问题描述

我正在阅读一个文本文件,其中包含以列的形式放置的超过 64k 行整数数据。我之前所做的是使用 wxTextInputStream 逐行读取文件(因为它是 wxWidgets 应用程序),然后从读取行开始,我正在使用 wxStringTokenizer tkz(line, separator) 读取每个整数。但是这种方法需要 5 分钟读取文件并将数据存储到向量中。您能否提出更好的方法来减少逐行读取文件的时间并更好地使用标记器。

 wxFileInputStream input(filepath);
 wxTextInputStream textInput(input, wxT("\x09"), wxConvUTF8);

 while (input.IsOk() && !input.Eof())
{
    line = textInput.ReadLine(); // read a text line
    wxStringTokenizer  tkz(line, separator);
    while (tkz.HasMoreTokens())
    {
        if (lineCount < 2)
        {
            data_set.headers.push_back(string(tkz.GetNextToken().mb_str()));
            columns++;
        }
        else if (lineCount > 2) {

            tkz.GetNextToken().ToDouble(&ver);
            versionNumbers.push_back(ver);
            dataPoints++;
        }
        else tkz.GetNextToken();
    }
    lineCount++;
}

标签: c++c++17

解决方案


推荐阅读