而循环重复 4 次

While Loop Repeats 4 Times

本文关键字:循环      更新时间:2023-10-16

我试图只接受整数作为输入,并在一种验证的同时循环遍历它。问题是,当用户按照"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: ";
}

你可以使用它。

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

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

while 循环迭代的原因是流没有被完全提取,所以只需使用此行

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

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

在您的情况下,如果您输入"二",那么在 firs 迭代后,只会提取"t",第二次迭代的输入将是"wo"。但是通过添加此行流,在第二次迭代中将为空,并将从用户那里获取输入。