【发布时间】:2020-01-27 00:09:26
【问题描述】:
如何在集合中的字符串中找到子字符串?例如,如果我输入“Ville”,那么会找到 Louisville、Gainesville 和 Muellerville?我试过下面的代码
for(string const& search : cities)
{
if(find(search.begin(), search.end(), str) != std::string::npos)
{
string y = search;
employees.emplace_back(y);
,但我无法弄清楚我的语法有什么问题。此代码用于以下项目(Project Code)
编辑:我的问题很简单,通过使用 .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;
}
}
}
【问题讨论】:
-
你知道
std::search怎么用吗?因为这不是std::find的用途。 -
@SamVarshavchik 不,我不熟悉 std::search。
-
嗯,我想是时候熟悉它了,因为这应该是这样做的。
-
@SamVarshavchik 也许,我读错了文档,但它说 std::search 返回找到的第一个元素,其中包含字符串。我需要所有元素。
-
好吧,如果它返回迭代器到第一个元素,并且你知道你正在搜索五个字符,并且你知道它返回迭代器到第一个,你觉得有多难是要找出剩下的四个在哪里?