c++ - 在向量中查找字符串时遇到问题
问题描述
我的代码有问题。我正在接收一个 csv 文件并将其放入一个向量中,并且我希望能够让用户搜索一个项目。但是,由于某种原因,当我输入要查找的项目时,代码告诉我该项目不在向量中,但它在吗?
解决方案
在这个循环中:
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;
}