c++ - 如何更快地读取文本文件并使用标记器处理数据?
问题描述
我正在阅读一个文本文件,其中包含以列的形式放置的超过 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++;
}
解决方案
推荐阅读
- python - ImportError:密码学版本与加载的共享对象不匹配
- xml - 如何获取给定元素的最后一个非空子元素的位置
- r - 从 harvard dataverse 下载 csv 文件
- html - 如何使html页面根据时间更改背景颜色
- javascript - 如何解决 Javascript 中的警报引用错误?
- java - 如何为托管在 Kubernetes 中的多个应用程序选择 Kafka 事务 ID?
- react-native - 注册/登录后反应本机路由器通量路由
- c++ - 运算符重载取决于模板类型和虚拟运算符
- c# - 具有多态性的自定义 JSON 反序列化
- html5-canvas - 选择框被拖动,但不是对象