C++:cin.clear() 不会重置流
c++: cin.clear() doesnt reset the stream
我的问题是如果发生错误,我无法重置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
跳过非法字符。
使用类似以下内容:
int i;
while(cin>>i,!cin.eof())
{
if(cin.fail())
{
cin.clear();
string dummy;
cin >> dummy;
continue;
}
cout<<i<<endl;
}
这将跳过下一个单词。 如果你输入类似derp10 20
的东西,你会得到20。
相关文章:
- 了解 cin.fail() 和 cin.clear语言 - Vector 追加程序
- 为什么不能通过在错误输入后设置 std::cin.clear() 来使用 std::cin?
- cin.clear()是否保留EOF
- 使用cin.clear的一般用途是什么?
- 如何将光标移动到 cin.clear() 和 cin.ignore() 之后的文本输出末尾?
- cin.clear(ios_base::failbit) vs cin.setstate(ios_base::failb
- 使用 cin.ignore 和 cin.clear CPP 时的奇怪行为
- 为什么 std::cin.clear() 在这个简单的程序中不起作用?
- 有没有办法将cin.fail和cin.clear翻译成C编程语言
- Cin 不会暂停输入,尽管同时使用了 cin.clear() 和 cin.ignore()
- 当循环不中断时,使用 cin.ignore 和 cin.clear() 来验证输入
- cin.clear() 和 cin.ignore() 不起作用
- cin.clear() 不起作用 - 不读取输入
- cin.ignore() and cin.clear() in C++
- cin.clear() 不允许我进行新输入
- C++:cin.clear() 不会重置流
- cin.clear() 如何清除输入缓冲区
- 为什么getline()跳过输入,即使在cin.clear()之后也是如此
- 是cin.clear()和cin.ignore()之间必需的序列
- C++ 使用 cin.fail(), cin.clear() ---我有一个无限循环,不知道为什么