string number1,number2;
std::cout<<tip[0]<<"\n"<<tip[1]<<std::endl;
std::cin>>number1;
while(!isdigit(number1)){
std::cout<<tip[5]<<std::endl;
std::cin>>number1;
}
std::cout<<tip[2]<<std::endl
大概就是这个过程吧,会出现神马情况呢,如果cin接受的用户输入不是0~9而是其他呢. 我觉得木有亲手打过的童鞋100%说,循环判断是不是数字,不是就停下来等用户输入下一次. 那么好,扔VS里调试下吧.结果呢,无限循环吧..
原因 是什么呢.这里很明显嘛,为什么会循环,while嘛,为什么while会死循环,!isdigit(number1)成立.. 所以呢,number1,也就是从cin传递来的用户输入有问题. 有什么问题呢. typeid(number1).name(); 后得到一个反馈..嗯.char类型.. 那么如何解决呢? 我觉得加段小函数检查就可以了..
bool IsNumber(string s){
const char *tmp = s.c_str();
for(int i =0;i<s.length();i++)
{
if (tmp[i]>57||tmp[i]<48) return false;
}
return true;
}