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

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

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


person Arch1tect    schedule 02.04.2013    source источник


Ответы (1)


Я так думаю:

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;
    }
}

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

person Xymostech    schedule 02.04.2013
comment
извините, но я просто понимаю, что мне нужен исходный оператор if, потому что мне также нужно проверить и подтвердить правильность типа элемента. - person Arch1tect; 02.04.2013