Как найти подстроку в определенной строке в наборе - PullRequest
0 голосов
/ 27 января 2020

Как найти подстроку в строке в наборе? Например, если я введу «Вилле», то будут найдены Луисвилл, Гейнсвилл и Мюлервилль? Я попробовал следующий код

for(string const& search : cities)
{
if(find(search.begin(), search.end(), str) != std::string::npos)
{
string y = search;
employees.emplace_back(y);

, но я не могу понять, что не так с моим синтаксисом. Этот код используется в следующем проекте ( Код проекта )

РЕДАКТИРОВАТЬ: Моя проблема была проста и была исправлена ​​с помощью .begin () и .end () для перебора мультикарты name_address и найти каждое имя с помощью .substr. Я также использовал мультикарту вместо набора. Я нашел синтаксис проще и заставил его работать.

    for(auto it = name_address.begin(); it != name_address.end(); ++it)
    {

        for(int i = 0; i < it->first.length(); ++i)
        {   
            string tmpstr3 = it->first.substr(0 + i, str.length());
            if(str == tmpstr3)
            {
               employees.insert(it->second);
               break;
            }
        }
    }   

1 Ответ

1 голос
/ 27 января 2020

Вы, вероятно, ищете

if (search.find(str) != std::string::npos)

Вызов std::find, который вы не должны компилировать.

...