Я пытаюсь написать программу, которая сравнивает две строки (строку и подстроку) и побуждения при каждом обнаружении подстроки в строке. Однако, используя стандарт:
if(str.find(substr) != string::npos)
{
count++;
}
Я столкнулся с проблемой, что если подстрока появляется в строке несколько раз, она увеличивается только один раз. Таким образом, если строка «test test test test», а подстрока «test», число заканчивается только 1 вместо 4.
Каков наилучший способ исправить это?
* Примечания для контекста:
1) В какой-то момент я проверял строку символ за символом, чтобы увидеть, совпадают ли они, но мне пришлось отказаться от этого, когда я столкнулся с проблемами, когда некоторые слова имелименьшие слова в них.
Пример: 'is' будет выбрано внутри слова 'this' и т. Д.
2) Большая программа, для которой она предназначена, принимает два вектора. В первом векторе есть строка для каждого элемента, являющегося предложением, которое пользователь вводит (действуя в главной строке в примере выше). И у второго вектора есть каждое слово из всех предложений, введенных в первый вектор (действуя как подстрока в примере выше). Не уверен, что этот бит имеет значение или нет, но подумал, что я его туда добавлю
Пример:
vector<string> str {this is line one, this is line two, this is line three};
vector<string> substr {is, line, one, this, three, two};
3) Я думаю, был ли какой-то способ сделать противоположность! = string :: npos будет работать, но не уверен, существует ли он вообще.