这可能起初看起来像一个奇怪的问题,但是当发出cin
请求时,如果收到错误的类型,它仍会继续,但cin
的状态会发生变化。
如何循环直到cin
正常,例如当我要求一个数字时,如果没有给出额外的代码,它会“接受”一个字符串,例如一个循环?
最后,当我连续多次使用cin
时,它按预期执行第一个cin
,但随后跳过其余部分;我该如何解决?如果您需要更多信息,请在评论中提问。
// Example
cout << "Enter a number: ";
cin >> num; // A string is given
cout << "Enter another number: ";
cin >> num2;
在上面的示例中,字符串将被接受,第二个cin很可能由于某种原因而跳过。我前一段时间找到了这个问题的答案,但我丢失了我用过的循环片段:/
答案 0 :(得分:2)
示例:
int value;
while(!(cin >> value))
{
cin.clear();
cin.ignore(); // eat one character
}
while(!(cin >> value))
{
cin.clear();
cin.ignore(10000,'\n'); // eat the rest of the line
}