1
我在C++中创建了一个记事本++插件,它在日志文件中的关键字之间进行搜索并在该关键字之间复制整个数据(该关键字在文件或根本不会发生)。 这里是我的代码[在文本文件中搜索] [在C++中的Notepad ++插件]
std::ifstream in(curr_file_path);
std::string search("TEXT TO SEARCH");
while (std::getline(in, line))
{
r_val = line.find(search);
if (r_val != -1)
{
f_match = r_val;
r_val = -1;
while (r_val == -1)
{
std::getline(in, line);
r_val = line.find(search);
for (int i = 0; i < line.size(); i++)
{
pDestText[textLen++] = line[i];
}
}
pDestText[textLen - 27] = '\0';
break;
}
}
}
搜索要searched.Input文件中的字符串是我的查询是作为日志文件是非常大的,它需要时间约5 seconds.Can我优化这 。我正在考虑的一个优化是跳过第一个50000行代码,因为我确信我所看到的文本不会在第一个50000行中出现。但是有没有更好的优化方法。如果没有,任何人都可以告诉如何跳过第一个50000如果代码行少于50000行,则会发出错误。
如果IO是瓶颈,请考虑此https://stackoverflow.com/a/4558426/7132300 – algrid