C++,怎么让int 型变量只能输入数字??

比如说我intnum;cin>>num;如果我在键盘上输入字母,标点什么的是会陷入死循环的,怎么避免这种情况。。... 比如说我 int num; cin>>num; 如果我在键盘上输入字母,标点什么的是会陷入死循环的,怎么避免这种情况。。 展开
 我来答
xiaowei01357
推荐于2018-04-13 · TA获得超过241个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:92.2万
展开全部
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()来忽略缓冲里面的字符,也就变相的 清空缓存
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
楼艳兴鹏赋
2019-09-26 · TA获得超过3848个赞
知道大有可为答主
回答量:3123
采纳率:24%
帮助的人:495万
展开全部
如果你按数字读入的话,读到无法接受的部分后,读入这个动作就会停止,
继续用int读的话就永远也读不过
可以考虑用string来读,
一次读入一行,
然后用atoi转成整数,如果你对格式要求特别严格的话也许只能自己转了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SinbadLee
2012-04-16 · TA获得超过309个赞
知道小有建树答主
回答量:302
采纳率:0%
帮助的人:134万
展开全部
这恐怕难以避免,只能对输入进行判断,如果不是期望的值,给予提示,要求重新输入。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0浮云追月0
2012-04-16 · TA获得超过266个赞
知道小有建树答主
回答量:159
采纳率:100%
帮助的人:102万
展开全部
最简单的方法,就是在控件属性里把Number勾选上..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老猿Python
2012-04-16 · TA获得超过918个赞
知道小有建树答主
回答量:459
采纳率:100%
帮助的人:330万
展开全部
cin本身输入任何数据都可以,但由于num是整型,不会执行赋值,因此应用程序必须有判断机制。
追问
就是想请问下这个 判断机制 怎么写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式