Есть несколько моментов, которые вы должны рассмотреть, вы использовали Text
(глобальную переменную) вместо bText
аргумента, и затем вы зацикливаетесь на размере строки, но вместо этого он должен зацикливаться, когда заменять нечего.и самый важный момент, который следует учитывать в вашем алгоритме, это каждый раз, когда вы выполняете поиск с начала, а не с последней найденной позиции.
<iframe height="477px" width="100%" src="https://repl.it/repls/RudeLinedGzip?lite=true" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals"></iframe>
#include <string>
#include <iostream>
using namespace std;
string Text = "Auntie saw an ant cross the kitchen counter. Then latter she\
saw a group of ants cross the floor. But, she was focused on adding a new 2 \
meter antenna to her 40 foot antenna mast. Friends would be coming over to \
help with the raising and lowering of the antenna mast.";
string FindAndSubstitutes(string bText, string OldWord, string NewWord);
int main()
{
cout << Text << endl;
cout << endl;
string Revise = FindAndSubstitutes(Text, "ant", "termite");
cout << Revise << endl;
return 0;
}
string FindAndSubstitutes(string bText, string OldWord, string NewWord)
{
int len = Text.length();
int OldStrLen = OldWord.length();
size_t WhereIsAnt = bText.find(OldWord, 0);
while(WhereIsAnt != string::npos)
{
string partBefore = bText.substr(0, WhereIsAnt);
string partAfter = bText.substr( WhereIsAnt + OldStrLen );
bText = partBefore + NewWord + partAfter;
WhereIsAnt = bText.find(OldWord,WhereIsAnt+1);
}
return bText;
}