首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >While循环重复4次

While循环重复4次
EN

Stack Overflow用户
提问于 2012-11-25 15:36:06
回答 2查看 496关注 0票数 2

我尝试只接受整数作为输入,同时循环它作为一种验证。问题是,当用户输入类似“两个”的内容时,while循环在再次询问用户之前会对输入进行3次不同的遍历。有没有办法防止这种情况发生而跳过3次迭代呢?

代码语言:javascript
复制
cout << "Enter Student ID: ";
while(!(cin >> id))
{
    cout << "\nERROR: Please enter a Positive Whole Number" << endl;
    cin.clear();
    cin.ignore ();
    cout << "Enter Student ID: ";
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-25 15:46:09

你可以用这个。

代码语言:javascript
复制
cin.ignore (std::numeric_limits<streamsize>::max (), '\n') ;

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

票数 3
EN

Stack Overflow用户

发布于 2012-11-25 17:58:49

while循环迭代的原因是不能完全提取流,所以只使用下面这一行

代码语言:javascript
复制
cin.ignore (std::numeric_limits<streamsize>::max (), '\n') ;  

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

在你的例子中,如果你输入"two“,那么在第一次迭代之后,只会提取't‘,第二次迭代的输入将是"wo”。但是通过添加这一行,流在第二次迭代中将是空的,并将接受来自用户的输入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13549190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档