如何忽略输入结束时的空行

时间:2013-04-02 05:31:41

标签: c++ input newline cin

以下代码可以正常工作,还可以检查用户是否输入了正确数量的项目,但是当输入有一个空白行尾时它会失败。

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&gt;&gt; item1),因为如果item1的类型错误,我就无法查看错误消息。

1 个答案:

答案 0 :(得分:2)

我认为:

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

会做你想做的事。