请问C++中如何限定用户输入数字?

SheFuZuo 2009-04-19 05:06:06
int oper;
cin >> oper;
当输入的是文字会崩溃,请问如何解决??
有相关库函数吗?在哪个头文件中??
...全文
1105 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hiboys 2009-04-20
  • 打赏
  • 举报
回复
int i;
while (cin >> i,!cin.eof())
{
if (cin.bad())
//do your error process
if (cin.fail()){
cout<< "bad input ,try again";
cin.clear(istream::failbit);
continue;

}

//here ,i get the integer val,process it

}
c++落日黄花了哦
hjjdebug 2009-04-20
  • 打赏
  • 举报
回复
即如此,你可以把把用户的输入放到缓冲区,自己判断。
例如:char buffer[256];
cin >> buffer;
然后自己判断用户输入是文字还是数字,曲线救国了。
SheFuZuo 2009-04-20
  • 打赏
  • 举报
回复
对不起,麻烦各位了,我是个初学者啊,还不用异常处理啊
我这样控制当输入非数字时还是会崩溃啊,请各位再指点一下。
if(oper< 0 || oper > 65535)
{
oper = 1;
continue;
}

外层是一个do循环。
liao05050075 2009-04-19
  • 打赏
  • 举报
回复
可以做到,但是很麻烦。
你可以对输入进行判断,如果输入不是你要,那么就让用户重输。
「已注销」 2009-04-19
  • 打赏
  • 举报
回复
GUI上对Edit控件,可以窗口子类化,然后判断之。
zhangchaokun 2009-04-19
  • 打赏
  • 举报
回复
苦海无涯,回头是岸
hjjdebug 2009-04-19
  • 打赏
  • 举报
回复
顶一楼,用try{} catch(), 它是c++的安全机制,不是库函数。
jackyjkchen 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 arong1234 的回复:]
console方式的控制能力很弱,而且现在还有多少需要在console进行输入输出并进行复杂控制的?console就是做非常非常简单的事情才需要的,基本不需要输入输出的。

不要做这种毫无意义的研究了,等你技术好了,在GUI上做就简单多了,
[/Quote]

确实是,当年我做第一个小学期的时候,输入控制下了很大的脑筋,连goto都用了,也仅仅是勉强达到目的
zhrh505 2009-04-19
  • 打赏
  • 举报
回复
int oper是整型的,你输入文字?不是有问题啊?
arong1234 2009-04-19
  • 打赏
  • 举报
回复
console方式的控制能力很弱,而且现在还有多少需要在console进行输入输出并进行复杂控制的?console就是做非常非常简单的事情才需要的,基本不需要输入输出的。

不要做这种毫无意义的研究了,等你技术好了,在GUI上做就简单多了,
pengzhixi 2009-04-19
  • 打赏
  • 举报
回复
异常处理?

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧