【问题标题】:How to Find a Substring in a Particular String in a Set如何在集合中的特定字符串中查找子字符串
【发布时间】: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 返回找到的第一个元素,其中包含字符串。我需要所有元素。
  • 好吧,如果它返回迭代器到第一个元素,并且你知道你正在搜索五个字符,并且你知道它返回迭代器到第一个,你觉得有多难是要找出剩下的四个在哪里?

标签: c++ set multimap


【解决方案1】:

您可能正在寻找

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

您的 std::find 调用不应该编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    相关资源
    最近更新 更多