C++如何判断收到消息是字符串还是数字

 我来答
好程序员
2016-04-12 · HTML5前端培训/大数据培训/Java
好程序员
好程序员是IT高端课程培训基地,从平凡到卓越,为梦想而拼搏。
向TA提问
展开全部

只需要 挨个字符判断其ASCII码是否属于数字范围 48--57

转为ASC码 :int i=(int)a; //a是字符

string s;

int tmp = (int)s[i];

C++实例

#include <iostream>  
#include <sstream>  
using namespace std;  
  
bool isNum(string str);  
int main( )  
{  
  
    string ss1="2y5r";  
    string ss2="2558";  
    if(isNum(ss1))  
    {  
        cout<<"ss1 is a num"<<endl;  
    }  
    else{  
        cout<<"ss1 is not a num"<<endl;  
  
    }  
    if(isNum(ss2))  
    {  
        cout<<"ss2 is a num"<<endl;  
    }  
    else{  
        cout<<"ss2 is not a num"<<endl;  
          
    }  
    return 0;  
}  
  
bool isNum(string str)  
{  
    stringstream sin(str);  
    double d;  
    char c;  
    if(!(sin >> d))  
        return false;  
    if (sin >> c)  
        return false;  
    return true;  
}

输出结果:

ss1 is not a num

ss2 is a num

06shufu
2014-12-29 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:105
采纳率:0%
帮助的人:66万
展开全部
很好办嘛,那你就检查消息中是否含有字母就行了,有字母的就是字符串,没有的就是数字了!
将字符串赋值给数组a[100],然后用循环对比ascii码,比如:
asc(a[i])<asc('0')则包含非数字即为字符串;
asc(a[i])>asc('9')则也包含非数字字符,也为字符串。
只要判断出有一个为非数字字符即为字符串。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xyzzxr
2014-12-29
知道答主
回答量:28
采纳率:0%
帮助的人:10.7万
展开全部
#include<iostream>
using namespace std;

bool IsNumber(char *str)
{
int nLen = strlen(str);
// 判断小数的话只需要增加小数点的处理就好了
int nCount = 0;// 记录小数点的个数

for (int i=0; i<nLen; i++)
{
if (str[i] < '0' || str[i] > '9')
{
return false;
}

// 判断小数点
if (str[i] == '.')
{
if (nCount == 0)
{
nCount++;
}
else
{
return false;
}
}

}

return true;
}

int main()
{
char str[100];
do
{
cin.getline(str, sizeof(str));
} while (!IsNumber(str));
}

自己写个这样的函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
826010478
2014-12-29 · TA获得超过521个赞
知道小有建树答主
回答量:920
采纳率:53%
帮助的人:287万
展开全部
判断字符的ASCII值
追问
消息很长判断字符的话岂不是很麻烦??有没有相应的函数可以调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三清淡PE
2019-03-12
知道答主
回答量:1
采纳率:0%
帮助的人:764
展开全部
#include <ctype.h>
#include <string>
using namespace std;
bool isnum(string value)
{
return value.end() == std::find_if_not(value.begin(), value.end(),
[](int c) {return isdigit(c); });
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式