Следующий код работает нормально, а также проверяет, ввел ли пользователь правильное количество элементов, но он терпит неудачу, когда ввод имеет конечную пустую строку.
string item1, item2, item3;
while(cin.good) {
//this allows me to both check if user input enough items
//EDIT: and if items are of right type so I can cerr
if (cin >> item1 && cin>> item2 && cin>> item3) {
doStuff(item1,item2,item3);
}else {
cerr<<"bad input! Not enough input items or wrong type"<<endl;
}
}
Могу ли я изменить cin.good на что-то другое, чтобы решить ситуацию, когда в конце есть пустая строка? Я приму и другие решения.
РЕДАКТИРОВАТЬ: я понимаю, что не могу использовать while(cin >> item1), потому что тогда я не могу получить сообщение об ошибке, если item1 имеет неправильный тип.