最近遇到一个小问题,判断输入的内容是否为整数。
具体方法如下:
首先定义接收内容的字符串 string s;
调用C++的 getline方法,格式如下:getline(cin,s),getline可以接收空格,遇到换行输入结束。
然后依次判断字符串中的字符,是否为数字,如果遇到一个非数字的字符,则不是整数。
具体程序如下:
bool isDigit(char a) {
if (a - '0' == 0 || a - '0' == 1 || a - '0' == 2 || a - '0' == 3 ||
a - '0' == 4 || a - '0' == 5 || a - '0' == 6 || a - '0' == 7 ||
a - '0' == 8 || a - '0' == 9)
return true;
return false;
}
void testInteger(string y) {
for (int i = 0; i<y.length();i++)//字符串内容是否为整数
if (!isDigit(y[i])) {
cout<<"输入内容不是整数......"<<endl;
return;
}
//将字符串转化为数字
int num;
istringstream t(y);
t >> num;
cout<<"整数为:"<<num<<endl;
}
int main(){
string s;
cout << "请输入整数:"<<endl;
getline(cin, s);
testInteger(s);
return 0;
}
当然这个也是有缺陷的,没有判断以0开头的情况:0 、00 、000;也没有判断负数的情况;不过实现起来应该都比较简单,有时间再补充吧!