Я пытаюсь написать простую программу упражнений, которая позволяет пользователю вводить имена своих друзей и отслеживать, как долго они с ними не разговаривали. Я хочу проверить ввод имени друга, чтобы они могли выйти из ввода l oop, если вместо имени введут di git. Я предполагаю, что я делаю что-то не так с параметрами find_if, но, как новичок, я не совсем понимаю, что мне следует изменить.
Если кто-нибудь может объяснить, как использовать find_if в этом случае, я был бы очень признателен. Кроме того, если вы видите что-то явно неправильное или неэффективное в моем коде, пожалуйста, дайте мне знать.
Вот мой код:
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Friend{
string friendName=" ";
int friendDays = 0;
Friend(string& name, int& days){
friendName=name;
friendDays=days;
printFriend();
}
void printFriend(){
cout<<"You haven't seen ";
cout<<friendName<<" in ";
cout<<friendDays<<" days \n";
}
};
int main(int argc, const char * argv[]) {
int &&friendDays{};
string &&friendName{};
vector <Friend> friendArr;
int i=0;
while (cin){
cout<<"Enter friends name: \n";
cin>> friendName;
if (find_if(friendName.begin(), friendName.end(), isdigit) != friendName.end())
{
break;
}
cout<<"How many days since you last spoke: \n";
cin>>friendDays;
friendArr.push_back(Friend(friendName,friendDays));
i++;
}
cout<<"These are all your friends: \n";
for (auto&x:friendArr){
x.printFriend();
}
}