Так что я делаю фильтр для оскорбительных слов для этой игры, над которыми я занимаюсь программированием, и если оскорбительное слово содержит пробел, моя программа мгновенно падает. Если слово не содержит пробела, слово правильно заменяется на beep. Мне было интересно, знает ли кто, почему это происходит. Пример того, как я заменяю слово:Программа вылетает, когда оскорбительное слово содержит пробел?
if (ContainsAbusiveWord(strMsg.c_str()))
{
if (stricmp(strMsg.c_str(), GetChatFilter()->GetLastFilteredStr().c_str()))
{
if (m_nLastAbuseTime < 1) //if user isn't chat blocked
{
for (int i = 0; i < GetChatFilter()->GetLastFilteredStr().length(); ++i)
{
if (isspace(i))
{
GetChatFilter()->GetLastFilteredStr().erase((remove_if(GetChatFilter()->GetLastFilteredStr().begin(), GetChatFilter()->GetLastFilteredStr().end(), isspace), GetChatFIlter()->GetLastFilteredStr().end()));
strMsg.replace(strMsg.find(GetChatFilter()->GetLastFilteredStr()), GetChatFilter()->GetLastFilteredStr().size()-1, "*beep*", GetChatFilter()->GetLastFilteredStr().length() - 1);
}
}
strMsg.replace(strMsg.find(GetChatFilter()->GetLastFilteredStr()), GetChatFilter()->GetLastFilteredStr().size(), "*beep*", GetChatFilter()->GetLastFilteredStr().length());
}
else
{
return false; //don't send the message
}
}
}