Вот небольшой фрагмент моего кода:
int read_prompt() {
string prompt,fname,lname,input;
int id;
cout << "customers> ";
cin >> prompt;
if (prompt.compare("add") == 0) {
cin >> id;
cin >> fname;
cin >> lname;
NewCustomer(id,fname,lname);
} else if (prompt.compare("print")==0) {
print_array();
} else if (prompt.compare("remove")==0) {
cin >> id;
RemoveCustomer(id);
} else if (prompt.compare("quit")==0) {
return 0;
} else {
cout << "Error!" << endl;
}
read_prompt();
return 0;
}
Это работает нормально, пока пользователь не вводит ничего неожиданного. В одном из тестовых случаев эта программа должна передать входные данные «добавить Даффи Дака со скоростью 125 миль в час», где id будет равен 125, fname равно mph, а lname равно Daffy. После того, как эта функция получает все три переменные, она снова вызывает себя и повторно запрашивает пользователя, который затем вводит Duck, какая «Ошибка!» получает вывод, очевидно.
Как мне поймать эту ошибку, когда пользователь вводит ее? Является ли cin лучшей функцией для использования в этом отношении? Я искал getline(), но я немного не уверен, как это реализовать.
switch
. Вы избежите многих ошибок и кода проверки. - person ChiefTwoPencils   schedule 16.02.2013cin
не является функцией; это объект. Таким образом, у него есть функции-члены, и есть бесплатные функции, которые могут его использовать. Многие из них являются экстракторами, то есть перегрузкамиoperator>>
. - person Pete Becker   schedule 16.02.2013