在文本文件中查找字符串的最快方法是什么?案例场景:在文本文件中查找特定路径,列出大约50000个文件路径(每个路径都有自己的行)。
答案 0 :(得分:2)
这个大小的文件应该很容易放在内存中,你可以把它变成一个std :: set(或者更好的是一个hashset,如果你手头有一个库),路径就是它的项目。检查确切路径是否存在将非常快。
如果你还需要寻找子路径,那么排序的std :: vector(如果你只是寻找前缀)可能是唯一有用的方法 - 或者如果你正在寻找完全一般的子串然后你需要扫描所有的矢量,但除非你必须这么做,即使这不会太糟糕。
答案 1 :(得分:2)
你是否必须在文件中找到一个字符串,在几个文件中重复使用相同的字符串,在同一个文件中找到几个字符串?
根据具体情况,您有几种可能的答案。
如果你必须在同一个文件中找到几个字符串,那么构建一个数据结构(就像Alex提出的集合一样)很有用
使用像Boyer-Moore这样的算法是有效的
使用正则表达式引擎可能会更好。
答案 2 :(得分:0)
这是正则表达式的字段;你应该看看grep和awk。
答案 3 :(得分:0)
我不确定您希望使用搜索的范围,但FSM是很好的选择。
以下是讨论:Short example of regular expression converted to a state machine?