Как да игнорирате празния ред в края на въвеждането

Следният код работи добре и също така проверява дали потребителят е въвел правилното количество елементи, но не успява, когато входът има празен ред в края.

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