当前位置:编程学习 > C#/ASP.NET >>

C++ cin输入问题

我想从键盘输入一个整数,但是我疑惑的是如果是数字+字符就不会报错的;如果我输入的是字符+数字就会报错。具体如下:
int num;
while(true)
{
cin>>num;
if(!cin)
{
cout<<"输入错误,请重新输入: "; 
cin.clear();
cin.sync();
}
else
{
break;
}
}
假设我输入了5t,那么不会报错,num的值为5;假设我输入的是t5,那么就会报错,提醒重新输入。
我后来将代码改为:
int num;
while(!(cin>>num))
{
                  cout<<"输入错误,请重新输入: "; 
cin.clear();
while(cin.get()!='\n')
{
continue;
}
}
但依旧不能解决问题,我想要得到的结果是如果我输入5t,那么就要提醒输入出错,重新输入,而不会将num的值设为5。求教高手解决,并说明出现上述情况的原因,谢谢! --------------------编程问答-------------------- int num;
while(true)
{
cin>>num;

因为这个嘛,你定义为int了,你先输入字符肯定不行,但是你先输入数字,再输入字符,它会帮你解析的。


你最好定义为
string num;
cin>>num;

然后再处理 --------------------编程问答-------------------- 字符串转换为数值时,是从头开始查找连续的数字,忽略后面跟随的其它字符,如果开头不是数字则出错。
你可以先输入到字符串中,然后自己检查是否全部为数字,符合要求再转换为数值。 --------------------编程问答-------------------- 把输入接收到一个字符数组中,循环判断数组中的每一个字符x看是否满足x>='0'&& x<='9',不满足要求重新输入~~~~ --------------------编程问答-------------------- 定义的是整型 int  mun,你输入字符当然报错
最好是做个判断,如果不是整数,就return --------------------编程问答-------------------- 进来看看是什么奇特的问题!!!!!!! --------------------编程问答-------------------- --------------------编程问答-------------------- 变量的定义! --------------------编程问答-------------------- 5t结果NUM=5
倒过来就是字符串了吧,赋给INT型肯定出错。
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,