发布网友
共4个回答
热心网友
定义接收内容的字符串 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)用字符串方式读入,如果只含12345670,则是整数.
(方法2)用字符串方式读入,如果含点号,或含E,或含e,则不是整数。
(方法3)用浮点数读入,如果下面条件成立,则是整数。
float a;
if ( (float) ((int) a) == a )
方法1 最可靠。
热心网友
方法一
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;
}
热心网友
提供一个思路:用正则表达式试试看
^(|[1-9][0-9]*|-[1-9][0-9]*)$ 可以匹配一个非零整数