在C++中找到子字符串的最快方法

4

我需要在一个字符串中找到很多子字符串。我下载了一个网页并将其放入一个字符串中。 然后,我必须查看页面是否包含某些字符串(子串)。

现在我正在使用boost库的正则表达式,因为我用它来使用正则表达式模式([0-9]等)。

问题是: 如果我只需要在字符串中查找一个子字符串,哪种方法最快?


声称链接的“重复”对于这种标准日常情况有任何实际价值,几乎是虚伪的...那个页面实际上是一篇学术/研究讨论。它与这个问题没有任何关系,本质上只是关于调用哪些C++函数进行一些HTML抓取... - Sz.
1个回答

2

4
仅翻译文本内容:仅提供链接的答案并不有用,因为链接可能会失效。请考虑在链接之外发布一些相关的解释。 - abhishek_naik
@BatCoder 好的。一般来说,有几种算法可以从主题中完成任务:Boyer-Moore、Boyer-Moore-Horspool、Turbo Boyer-Moore、Knuth-Morris-Pratt。它们都使用不同的技术来查找子字符串。Boyer-Moore使用坏字符表和好后缀表,Boyer-Moore-Horspool仅使用坏字符表,Turbo Boyer-Moore与原始的Boyer-Moore相比只需要少量步骤,Knuth-Morris-Pratt基于部分匹配表。比较结果是Boyer-Moore-Horspool获胜。就像你所说的,还有一个类似的stackoverflow问题,其中包含简要说明。 - paweldac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接