Как игнорировать пустую строку в конце ввода

Следующий код работает нормально, а также проверяет, правильно ли введено количество элементов пользователем, но происходит сбой, когда на входе есть завершающая пустая строка.

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 имеет неправильный тип.

0

Решение

Я думаю что:

while(cin >> item1) {
//this allows me to check if user input enough items
if (cin >> item2 && cin >> item3) {
doStuff(item1,item2,item3);
} else {
cerr<<"bad input! Not enough input items"<<endl;
}
}

будет делать то, что вы хотите.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru