Возникли проблемы с поиском нескольких подстрок в строке - PullRequest
0 голосов
/ 02 декабря 2019

Я пытаюсь написать программу, которая сравнивает две строки (строку и подстроку) и побуждения при каждом обнаружении подстроки в строке. Однако, используя стандарт:

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 будет работать, но не уверен, существует ли он вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...