1

乍一看,这似乎是一个奇怪的问题,但是当发出cin请求时,如果它接收到错误的类型,它仍然会继续,但状态会cin发生变化。

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

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

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

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

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

4

1 回答 1

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
}
于 2011-04-14T21:55:25.487 回答