C++如何判断收到消息是字符串还是数字
5个回答
展开全部
只需要 挨个字符判断其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
展开全部
很好办嘛,那你就检查消息中是否含有字母就行了,有字母的就是字符串,没有的就是数字了!
将字符串赋值给数组a[100],然后用循环对比ascii码,比如:
asc(a[i])<asc('0')则包含非数字即为字符串;
asc(a[i])>asc('9')则也包含非数字字符,也为字符串。
只要判断出有一个为非数字字符即为字符串。
将字符串赋值给数组a[100],然后用循环对比ascii码,比如:
asc(a[i])<asc('0')则包含非数字即为字符串;
asc(a[i])>asc('9')则也包含非数字字符,也为字符串。
只要判断出有一个为非数字字符即为字符串。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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));
}
自己写个这样的函数
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));
}
自己写个这样的函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
判断字符的ASCII值
追问
消息很长判断字符的话岂不是很麻烦??有没有相应的函数可以调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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); });
}
#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); });
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询