在最后输入非数值后,cin循环时如何退出?

按下“ Enter”键时,此代码将多个int放入向量中。输出显示向量中的所有元素;每个元素以逗号分隔。问题是当我在最后输入字母或空格时,“ Enter”键不会退出while cin循环。 例如:

输入:4 5 6 2 1g //在此处按Enter键将使其转到下一行,并且不会中断while循环

通常如何工作:

输入:4 5g 6 2 1 // //如果在此处按Enter,它将忽略“ g”并打印向量中的数字元素,并用逗号分隔,这是我想要的,但是如果“ g”在最后      输出:4,5,6,2,1

仅当我在末尾输入非数字输入时,而不是在元素之间时,才出现问题。最后按下空格也会导致问题

int main() {

vector<int> myv;
int value = 0;

while (cin >> value){
    myv.push_back(value);
    if (cin.get() == '\n'){
        break;
    }
}

auto iter = myv.begin();
    while(true){
        cout << *iter;
        ++iter;
        if(iter == myv.end()){
            break;
        }
        else{
            cout << ", ";
        }
    }
}
评论