关于STL中的一种死循环的出现情况
x1001 2003-08-26 07:43:29 //关于STL中的一种死循环出现情况
//程序例程如下:
#include <iostream>
int main()
{
using namespace std;
unsigned int age=0;
while(true)
{
cout<<"请输入年龄:大于0,小于1000:"<<endl;
cin>>age;
if(age<=0 || age>1000)
{
cout<<"输入年龄不正确,请输入范围在0到1000内。"<<endl;
continue;
}
else
break;
}
cout<<"年龄:"<<age<<endl;
return 0;
}
以上,在输入一个比较大的数字时,就是死循环了。我没找到好的解决方法,只想有一种替代方法,如下:
#include <iostream>
int main()
{
using namespace std;
unsigned int age=0;
while(true)
{
cout<<"请输入年龄:大于0,小于1000:"<<endl;
string sv;
cin>>sv;
convert(sv,age); //自定义的一个函数,用来把输入的字串转换为数字,用strtoul()可能也不会达到要求。
if(age<=0 || age>1000)
{
cout<<"输入年龄不正确,请输入范围在0到1000内。"<<endl;
continue;
}
else
break;
}
cout<<"年龄:"<<age<<endl;
return 0;
}
上面这种方法好像比较傻,不知可有高手可有精辟解说,信手解开这个问题?