Я пытаюсь найти строку внутри вектора структур. Но я получаю сообщение об ошибке, сообщение об ошибке слишком длинное, поэтому я загружу его извне. Частично это
"ошибка: нет совпадения для оператора == (типы операндов: 'char' и 'const std :: __cxx11 :: basic_string') {return * __ it == _M_value;} "
Код, который я сейчас использую:
struct constants {
std::string name, lastname;
float salary=0;
};
void searchPerson(const std::vector<constants> &search) {
using namespace std;
vector<constants>name;
string searchTerm;
cout << "Enter last name of the person you wish you lookup." << "\n";
cin >> searchTerm;
for (size_t k=0; k<name.size(); k++){
if (std::find(name[k].lastname.begin(), name[k].lastname.end(), searchTerm) != name[k].lastname.end())
{
cout << "Test" << "\n";
}
}
}
Я просто не могу заставить его работать, я не знаю, в чем дело. Конечная цель - позволить пользователю ввести фамилию человека, если в программе сохранен человек с этой фамилией, он напечатает всю информацию об этом человеке (имя, фамилия и зарплата). Я, вероятно, также буду использовать ту же технику поиска, чтобы удалить человека из программы.
Я могу легко заставить его работать, просто используя for для l oop, но определенно должна быть причина для использования найти синтаксис, ниже чудеса работы фрагмента.
for (size_t i=0; i<name.size(); i++) {
if (name[i].lastname== searchTerm)
cout << "Test" << "\n";
}
https://pastebin.com/mk0pTWgr