循环重复4次

时间:2012-11-25 07:36:06

标签: c++ validation while-loop

我试图只接受整数作为输入,并在进行某种验证的同时循环它。问题是,当用户沿着“Two”的行输入某些内容时,while循环在再次询问用户之前经过输入3不同的时间。有没有办法防止这种情况发生,只是跳过3次迭代?

cout << "Enter Student ID: ";
while(!(cin >> id))
{
    cout << "\nERROR: Please enter a Positive Whole Number" << endl;
    cin.clear();
    cin.ignore ();
    cout << "Enter Student ID: ";
}

2 个答案:

答案 0 :(得分:3)

你可以使用它。

cin.ignore (std::numeric_limits<streamsize>::max (), '\n') ;

它会跳过所有行,无论你输入多少个无效字符,都不会得到额外的循环迭代。

答案 1 :(得分:0)

你的while循环迭代的原因是没有完全提取流,所以只使用这一行

cin.ignore (std::numeric_limits<streamsize>::max (), '\n') ;  

循环将只迭代一次,因为无论你提供多少大输入都将被提取。 Cin.ignore()仅从流中删除一个字符。

在你的情况下,如果你输入“two”,那么在第一次迭代之后,只会提取“t”并且第二次迭代的输入将是“wo”。但是通过添加此行,第二次迭代中的流将为空,并将从用户获取输入。

相关问题