c ++:cin.clear()不会重置流

Oli*_*ver 0 c++

我的问题是,cin如果发生错误,我无法重置流.例如,如果我在需要int时输入一个字符串,然后我清除了流,那么当循环到下一次时,我仍然会到达cin.fail()-if.

有帮助吗?

我的代码如下:

int main()
{
    int i;
    while(cin>>i,!cin.eof())
    {
        if(cin.fail())
        {
            cin.clear();
            continue;
        }
        cout<<i<<endl;
    }
    system("pause");
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句:有关信息,我使用Visual Studio作为IDE.

Jam*_*nze 5

好吧,字符串仍然存在,因为你没有提取它.所以下一次阅读也会失败.您需要使用cin.ignore跳过非法字符.