Некоторые возможные части ошибки вместе с ненужным кодом:
- Вместо
choice = getInt();
, просто используйте cin>>choice
; - Нет необходимости использовать такой код:
getline(cin, name);
fflush(stdin);
cin.ignore(numeric_limits<streamsize>::max(), '\n');
, когда вы даже не берете другую строку или строку ввода после использования getline()
выше. (следующие вызовы cout
)
Вместо этого используйте cin>>name
. Первоначально ваш код с этими строками не работал, когда я попробовал его на онлайн-компиляторе. Но это работает сейчас, после удаления тех, кто просто std::cin
.
Я сделал небольшой воспроизводимый пример на основе вашего кода, и он отлично работает:
#include <iostream>
#include <vector>
class Professor
{ public:
std::string name;
std::string getName()
{ return name; }
};
int main()
{ std::vector<Professor> professors;
Professor a,b,c;
a.name = "eerorika"; b.name = "S.S.Anne" ; c.name = "walnut";
professors.push_back(a);
professors.push_back(b);
professors.push_back(c);
int choice;
std::cin>>choice;
switch(choice)
{
case 1:
{ std::string profname;
std::cin>>profname;
if(professors.size()!=0)
for(Professor i:professors)
if(profname.compare(i.getName())==0)
std::cout<<"Professor name = "<<i.getName()<<"\n";
break;
}
case 2:
{ std::cout<<"Mystical";
break;
}
}
return 0;
}