Я сделал функцию для своей программы, которая читает из текстового файла, добавляет контент в вектор и затем выполняет поиск в этом векторе. Проблема в том, что даже если файл пуст, он показывает, что он что-то нашел, с другой стороны, если я изменяю возвращаемое значение на 0, он не дает результатов вообще!Функция поиска возвращает неправильные результаты
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;
vector<string> contacts;
//This function returns at what index the name is found
int searchContact(string contactToSearch)
{
string entry;
ifstream input;
input.open("contacts.txt");
while (input.good())
{
while (getline(input, entry))
{
contacts.push_back(entry);
}
input.close();
}
for(int i = 0; i < contacts.size(); i++)
{
if(contactToSearch == contacts[i])
{
//Found => Returning index rest of program can see index
return i;
}
}
return 1;
}
В цикле, где вы читаете содержимое файла, внешний цикл не требуется. –
Кстати, как вы отличаетесь от предмета, который ищете, не находящегося (когда вы возвращаете '1' после цикла), и когда элемент, который вы искали, был найден в индексе' 1'? Вероятно, вы должны вернуть что-то вроде '-1', если элемент не найден. –
Также обратите внимание, что при сравнении строк с использованием '==' это сравнение * точное * и чувствительно к регистру. –