Я пытаюсь написать свою собственную функцию, которая получает 2 строки и говорит, что первая содержит вторую в качестве слова (это означает, что слово окружено символом "" или " , ") Когда я тестирую его на строки« squawk, визг »и« squawk », это ok
, он переходит во второй цикл цикла (тот, что с j
), и выводит 1, но для« визга »он не зайдите в петлю j
. Вот код, который я до сих пор:Функция не входит в цикл
bool containsMeaning(string bigMeaning, string smallMeaning)
{
unsigned int smallCounter = 0;
unsigned int matchBeginning = 0;
unsigned int matchEnd = 0;
for (unsigned int i = 0; i < bigMeaning.size() - smallMeaning.size() + 1; i++)
{
cout << "i = " << i << endl;
smallCounter = 0;
if (bigMeaning[i] == smallMeaning[0])
{
matchBeginning = 0;
cout << "I'm inside the if " << i << endl;
for (unsigned int j = i; j < smallMeaning.size(); j++)
{
cout << "big char " << bigMeaning[j] << " small char " << smallMeaning[smallCounter] << endl;
if (bigMeaning[j] != smallMeaning[smallCounter])
{
cout << "I want to break free" << j << endl;
break;
}
else
{
matchEnd = j;
smallCounter++;
cout << "j = " << j << " smallcoutner = " << smallCounter << endl;
}
}
if (smallCounter == smallMeaning.size() &&
(matchBeginning == 0 || bigMeaning[matchBeginning - 1] == ' ' || bigMeaning[matchBeginning - 1] == ',')
&& (bigMeaning[matchEnd + 1] == '\0' || bigMeaning[matchEnd + 1] == ' ' || bigMeaning[matchEnd + 1] == ','))
return true;
}
}
return false;
}
Мысль об использовании отладчика и переходе через код? –
Какие аномалии вы наблюдали при прохождении кода по строкам с помощью отладчика? –
Я отметил его на линии 'cout << big char', когда я печатаю визг, он делает это в первом слове squawk для 3 символов, останавливается и никогда не переходит во второе слово – Robert