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

标签 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");
}

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

最佳答案

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

关于c++: cin.clear() 不重置流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12692286/

相关文章:

c++ - 容器如何处理 lambda 表达式的参数

C++ 为一般设计问题找到最合适的设计模式

java - 语言类型兼容性

c++ - 给 Label C++ 的首字母加下划线(下划线不显示)

c++ - 将 Yuv420 转换为 rgb 并在 qt 像素图上显示

c++ - 家长注册 child 的方法: how to avoid the design anti-patterns?

c++ - 大容量存储设备删除策略

c++ - 友商+: no matching function for call

c++ - 收集稍后应在宏中调用的函数列表

c++ - scanf 返回条件