gpt4 book ai didi

c++ - 使用 aho-corasick 算法崩溃?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:20 26 4
gpt4 key购买 nike

<分区>

我在这里得到了 aho-corasick 算法的代码:http://www.komodia.com/aho-corasick .

我按照指南说的那样使用它,添加线并构建树。

但是我确实将其从使用 std wstring 更改为 std string 但这应该无关紧要。我刚刚更改了 typedef。

当我使用它搜索某些东西时,如果找不到结果也没有问题。找到结果后,我得到一个 std out of range 异常。

这里崩溃了:

        if (aIterator==pNode->aMap.end())
//No, check if we have failure node
if (!pNode->pFailureNode)
{
//No failure node, start at root again
pNode=&m_aRoot;

//Reset search string
sMatchedString="";

//Did we do a switch?
if (bSwitch)
//We need to do this over
--iCount;

//Exit this loop
break;
}
else
{
//What is the depth difference?
unsigned short usDepth;
usDepth=pNode->usDepth-pNode->pFailureNode->usDepth-1;

//This is how many chars to remove
sMatchedString=sMatchedString.substr(usDepth,sMatchedString.length()-usDepth); //CRASHES HERE!!

//Go to the failure node
pNode=pNode->pFailureNode;

//Set to switch
bSwitch=true;
}
else
{
//Add the char
sMatchedString+=rString[iCount];

//Save the new node
pNode=aIterator->second;

//Exit the loop
break;
}
}

这里崩溃了:

sMatchedString=sMatchedString.substr(usDepth,sMatchedString.length()-usDepth); 

这里是变量:

enter image description here

我正在使用它在游戏中实现审查。

什么会导致它崩溃?

我有一些字符串添加了两次,这会导致问题吗?

谢谢

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com