繁体   English   中英

While 循环重复 4 次

[英]While Loop Repeats 4 Times

我试图只接受整数作为输入并同时循环遍历它作为一种验证。 问题是,当用户沿着“二”行输入某些内容时,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() 仅从流中删除一个字符。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM