如何在C ++中找到字符串数组上的单词位置?

时间:2017-03-22 03:17:12

标签: c++ arrays location

对于我正在编写的程序,我需要在字符串数组中找到特定单词的位置,但我不知道如何。这是我制作的代码,但它不起作用:

 int location;
 string input;

 cout << "Type your name" << endl;
 cin >> input;

  for (int i = 0; i <= count; i++) 
    {
        call_DB[i].name;

    if (call_DB[i].name == input)
        {
            location = i;
        }
    }

该代码有什么问题,我该怎么做才能修复它?谢谢。

2 个答案:

答案 0 :(得分:1)

尝试std::find_if,在数组中搜索满足提供预测功能的项目。

auto iter = std::find_if(call_DB, call_DB + count, [&input](const YOUR_CALL_DB_TYPE& item ){ return item.name == input; });

if(iter == call_DB + count) 
     printf("Not found\n");
else
     printf("Found: %s\n", iter->name.c_str());

如果找到此类项目,则索引是距数组库size_t index = iter - call_DB;

的距离

答案 1 :(得分:1)

您可以使用std::find_if获取数组元素的迭代器:

auto it = std::find_if(std::begin(db), std::end(db), [&name](auto const& x) {
  return x.name == name;
});

如果你想将索引放入数组:

auto index = it - std::begin(db);