首页 > 解决方案 > 在向量中查找字符串时遇到问题

问题描述

我的代码有问题。我正在接收一个 csv 文件并将其放入一个向量中,并且我希望能够让用户搜索一个项目。但是,由于某种原因,当我输入要查找的项目时,代码告诉我该项目不在向量中,但它在吗?

标签: c++

解决方案


在这个循环中:

for (int i = 0; i < allApps.size(); i++) 
{
   if (userInput == allApps.at(i)) 
   {
     // ...
   } 
   else 
   {
      cout << endl << "Application not found." << endl << endl;
      break;
   }
}

一旦第一个字符串不是您要查找的内容,您就会退出循环。在做出决定之前,您需要查看所有字符串。您可以执行以下操作:

bool found = false;
for (int i = 0; i < allApps.size(); i++) 
{
   if (userInput == allApps.at(i)) 
   {
     // ...
     found = true;
   } 
}
if (!found)
{
   cout << endl << "Application not found." << endl << endl;
}

或者更好的是,使用算法:

auto i = std::find(allApps.begin, allApps.end(), userInput);
if (i != allApps.end())
{
  // ...
}
else
{
   cout << endl << "Application not found." << endl << endl;
}

推荐阅读