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]*)$ 可以匹配一个非零整数

C++ 如何判断输入的数据是否为整数
定义接收内容的字符串 string s,调用C++的getline方法,格式如下:getline(cin,s),getline可以接收空格,遇到换行输入结束。然后依次判断字符串中的字符,是否为数字,如果遇到一个非数字的字符,则不是整数。bool isDigit(char a) { if (a - '0' == 0 || a - '0' == 1 || a - '0'...

判断一个数是否为整数,算法用C++来怎么写?
用C++判定一个数是否是整数,这里涉及到一个精度问题。对于一个float或double数据类型,在有效数位以后的位数都是无效的值。比如 float a=10.00000000000000001;计算机就会将无效的位数截断,导致计算机读取的a就是10;判断是否是整数,可以这样判断 float a;float b=pow(10,-6.0);\/\/#include<math.h>...

c++如何判断一个数是不是整型
cout<<"不是整数\\n";

C++中怎么判断输入数字类型是整型还是浮点数?
不需要判断输入数字类型是整型还是浮点数,而且也根本无法判断。解决办法:用scanf读取输入数据,同时判断是否读取完毕。这是因为符合输入格式,输入流中只会剩下换行符'\\n'。代码片段如下:int a, b; char c;scanf("%d %c %d", &a, &c, &b);if (getchar() != '\\n') \/\/ 如果输入 3....

c++ 如何判断输入数据是否为 int型?
1 判断。--- 例如:输入 123 , 读入 123, 数据正确。输入 xab , 数据错误 输入 123.456,读入 123, 数据正确。余下的 .456 留在输入流缓冲区。--- 如果输入数据是 16进制,c 风格 用 r = scanf("%x",&k); c++ 要设 hex ;用同样方法判断 数据是否正确。

c++ 如何判断编辑框中的double中的数据是不是整数
编辑框中的肯定是字符串,所以只要找这个字符串中是否有小数点,以及小数点后的是不是全是0就可以了。可以取小数点后的字符串,用_ttoi\/atoi等系列函数转换成整数来判断是否为0。

C语言,判断输入的数是否是正整数?
{ int a;float b;\/\/用小数变量 scanf("%f",b);a=b;\/\/去除小数部分 if(a==b&&a>0){\/\/没有小数的和有小数的比,并且判断是不是正数。\/\/说明小数部分是0,而且是正数 printf("是正整数");}else{ printf("不是正整数");} return 0;} 我是C++语言,不习惯C语言,这里面好多错误,你...

c++判断输入是字符还是数字
可以参考下面的代码:include<iostream> using namespace std;int main(){ double num;if(cin>>num)cout<<"Input correct!"<<endl;else cout<<"Input erroe!"<<endl;return 0;}

c++中判断数据类型
int a;if(typeid(a) == typeid(int)) cout<<"int";if(typeid(a) == typeid(float)) cout<<"float";typeid和sizeof一样是个运算符,我一直很奇怪为什么很少人提到它

c++如何来判断是否为字符还是数字
首先 include <ctype.h> 然后 char c;c = getchar();用 isdigit(c);来判断是否为数字,如果是数字那么会返回非0 isalpha(c);来判断是否为字母,如果是字母那么返回非0

相似回答