C++ 如何判断输入的数据是否为整数

如题所述

定义接收内容的字符串 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;

}

扩展资料:

C++判断输入函数方法:

//is int?bool isDegital(string str) {//判断没有输入的情况

if(str=="")

{        

return false;

}    

else {//有输入的情况

for (int i = 0;i < str.size();i++) 

{            

if (str.at(i) == '-' && str.size() > 1)  // 有可能出现负数

continue;

数值在ascii码(编码)的‘0’-‘9’之间            if (str.at(i) > '9' || str.at(i) < '0')             

return false;

}        

return true;

}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-15
(方法1)用字符串方式读入,如果只含1234567890,则是整数.

(方法2)用字符串方式读入,如果含点号,或含E,或含e,则不是整数。

(方法3)用浮点数读入,如果下面条件成立,则是整数。
float a;
if ( (float) ((int) a) == a )

方法1 最可靠。本回答被提问者采纳
第2个回答  推荐于2018-03-29
方法一
C/C++ code
try
{
StrToInt(Edit1->Text);
}
catch(EConvertError &e)
{
ShowMessage("非整数!");
}

方法二
如输入的字串附给了String类型的参数str:
bool isInt;//是否参数
for(int i=0;i <str.Length();i++)
{
isInt=false;
for(int j=0;j <10;j++)
{
if(str.SubString(i+1,1)==IntToStr(j))
{
isInt=true;
break;
}
}
if(!isInt)
break;
}本回答被网友采纳
第3个回答  2020-08-03
提供一个思路:用正则表达式试试看
^(|[1-9][0-9]*|-[1-9][0-9]*)$ 可以匹配一个非零整数

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网