如何正确使用iostream cin?

时间:2011-04-14 21:49:10

标签: c++ cin

这可能起初看起来像一个奇怪的问题,但是当发出cin请求时,如果收到错误的类型,它仍会继续,但cin的状态会发生变化。

如何循环直到cin正常,例如当我要求一个数字时,如果没有给出额外的代码,它会“接受”一个字符串,例如一个循环?

最后,当我连续多次使用cin时,它按预期执行第一个cin,但随后跳过其余部分;我该如何解决?如果您需要更多信息,请在评论中提问。

// Example
cout << "Enter a number: ";
cin >> num; // A string is given

cout << "Enter another number: ";
cin >> num2;

在上面的示例中,字符串将被接受,第二个cin很可能由于某种原因而跳过。我前一段时间找到了这个问题的答案,但我丢失了我用过的循环片段:/

1 个答案:

答案 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
}