关于快速在文件内查找字符串,有好办法麻烦推荐一下!

不知大家有没有留意过,一些文本编辑器,如Editplus,Notepad++,它们的“在文件内搜索”的速度非常的快!几乎是在瞬间完成!

我生成了一个约20万行的文本文件(Utf8编码),然后让它们搜索一个指定的单词,这个文件里面,
起码有5000行的内容包含了我的单词,有些行还该单词出现的次数不止一次,它也能统计出来

然后,我复制这个文件为Unicode编码(文件夹里同时有这2个文件,总行数为40万行),它们的搜索速度,还是一样的一瞬间!!!

而我呢,不管用什么代码,(fgets fstream.getline 等,还是自己整个文件读入,然后逐个分析 \n)
仅是按行读出来,都要2秒左右(如果每行都保存起来,如保存到std::vectory等,花时还要多很多)
再加上逐行分析是否存在我的单词,时间都去哪儿了?!

有好办法麻烦推荐一下!在此先谢谢!

通常,文本编辑器不会以大文件作为目标的,基本上5Mb的纯文本就差不多快到极限了

文本编辑器多数都是将文本加载到内容进行处理的

你在搜索前,他也有一个加载过程,你不能把你加载文件和搜索的时间与单独在编辑器内搜索响应时间进行比较

在不是特别大的文本下,单独搜索指定内容(非正则),用正则搜索是很快的,正则会自动记录下你的所有匹配信息,包括位置,数量等

预先生成索引+分片多线程检索

多线程编程了解一下,另外就是避免频繁的内存拷贝