解决int型变量cin输入字符无限循环问题
2017-04-18 13:09
549 查看
先看下面的例程,并尝试编译运行它
这个程序的功能比较简单,当输入为正数时直接打印结果,如果是非正数会提示重新输入直到输入结果为正数为止,但对于这个程序如果输入字符,比如q,会出现意想不到的结果–重复打印”Enter a positive integer:”却不能重新输入。出现这种结果的原因就是
当然,也可以使用C++的库函数
4000
#include<iostream> using std::cin; using std::cout; using std::endl; int main() { int n; cin>>n; while(n < 1) { cout << "Enter a positive integer:" << endl; cin >> n; } cout << n <<endl; return 0; }
这个程序的功能比较简单,当输入为正数时直接打印结果,如果是非正数会提示重新输入直到输入结果为正数为止,但对于这个程序如果输入字符,比如q,会出现意想不到的结果–重复打印”Enter a positive integer:”却不能重新输入。出现这种结果的原因就是
cin进入了一种错误的状态,在这种情况下程序会持续输出cout后面的字符串并忽略后面的cin语句。解决的办法是重置输入缓冲,消除上一次的输入对下一次输入的影响,因此可以在键盘获取输入以后对输入进行一次校验,确定输入是否有效,程序如下
// 判断输入是否有效 while (cin.fail()) { cin.clear(); cin.ignore(100, '\n'); cout << "You can only enter numbers."; cout << "Enter a number:" << endl; cin >> n; }
当然,也可以使用C++的库函数
isdigit()来解决这个问题,它位于
<cctype>头文件中
4000
相关文章推荐
- c++ cin一个整数 输入其它字符产生死循环错误的解决方法。
- 解决给定义的整型数据输入字符时出现死循环的问题
- 解决cin因为输入错误的数据类型进入死循环的问题
- 解决IE的文本框无法输入任何字符的问题
- 作业三-3应用分支与循环结构解决问题——统计字符
- 完美解决QQ空间背景音乐中不能输入如"="等特殊字符问题
- 解决IE的文本框无法输入任何字符的问题
- c语言打印字符乱码和char *字符循环赋值时“段错误 (核心已转储)”问题解决
- 关于C++中给int变量输入字符引起的死循环解决方法
- 解决scanf或者cin造成的死循环问题
- 作业三-5应用分支与循环结构解决问题——输入五级成绩
- 完美解决x2注册页面出现‘抱歉,你输入的用户名小于3个字符问题’的两种方法
- 关于AutoCompleteTextView 为什么必须输入两个字符才能出现补全提示的问题的解决办法
- 循环控制输入n组测试字符的问题
- 整型变量输入为字符时死循环解决
- 作业三-应用分支与循环结构解决问题——.输入一个整数 x,计算并输出下列分段函数 sign(x) 的值
- 解决NetTerm输入双字符的问题
- 解决cin.getline()未经输入就结束的问题
- 解决cin输入类型不匹配的问题
- scanf和cin输入类型不匹配时造成的死循环问题