C++,怎么让int 型变量只能输入数字??
比如说我intnum;cin>>num;如果我在键盘上输入字母,标点什么的是会陷入死循环的,怎么避免这种情况。。...
比如说我 int num; cin>>num; 如果我在键盘上输入字母,标点什么的是会陷入死循环的,怎么避免这种情况。。
展开
展开全部
cin>>i;
while(1)
{
if(cin.good())
{
break;
}
else
{
cin.clear();
cin.ignore();
cout<<"输入错误的字符,请重新输入:";
cin>>i;
}
}
while(1)
{
if(cin.good())
{
break;
}
else
{
cin.clear();
cin.ignore();
cout<<"输入错误的字符,请重新输入:";
cin>>i;
}
}
追问
cin.good()、cin.clear();cin.ignore();都是什么意思啊??
另外,程序执行后是这个样子:
怎么把多余的 “输入错误的字符,请重新输入:"; 去掉呢?
追答
你把cout<<"输入错误的字符,请重新输入:";去掉不就行了
cin.good()是判断流是否正常,如果不正常,说明输入了不对应的东西,这个流就会出错,然后我们调用 cin.clear()来把流重置为正常状态,但是缓冲里面还是有我们刚才输入的不正常的东西,所以调用cin.ignore()来忽略缓冲里面的字符,也就变相的 清空缓存
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你按数字读入的话,读到无法接受的部分后,读入这个动作就会停止,
继续用int读的话就永远也读不过
可以考虑用string来读,
一次读入一行,
然后用atoi转成整数,如果你对格式要求特别严格的话也许只能自己转了。。
继续用int读的话就永远也读不过
可以考虑用string来读,
一次读入一行,
然后用atoi转成整数,如果你对格式要求特别严格的话也许只能自己转了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这恐怕难以避免,只能对输入进行判断,如果不是期望的值,给予提示,要求重新输入。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单的方法,就是在控件属性里把Number勾选上..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cin本身输入任何数据都可以,但由于num是整型,不会执行赋值,因此应用程序必须有判断机制。
追问
就是想请问下这个 判断机制 怎么写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询