BOOL IsDigit2(string str)
{
for(int i=0;i
if ((str.at(i)>'9') || (str.at(i)<'0') )
{
return FALSE;
}
}
return TRUE;
}
int main()
{
string snumb;
cout << "请输入数据:";
cin >> snumb;
bool bret = IsDigit2(snumb) ;
while( !IsDigit2(snumb) )
{
cout<<"请重新输入数据:";
cin >> snumb;
}
system("pause");
return 0;
}
比较字符串每一个ascii码,在'0'和'9'区间上的话就是数字,具体如下:
=======================
#include
#include
#define isDigital(x) (((x)>='0') && ((x) <= '9'))
using std::string;
int main(void)
{
string a;
a = "1234";
bool flag = true;
for(string::iterator itr = a.begin(); itr != a.end(); itr++)
flag &= isDigital(*itr);
if(flag)
std::cout<<"is digital."<
std::cout<<"is not digital."<
return 0;
}
=======
isDigtal宏是用来判断一个字符是不是数字的(通过比较ascii码)
主程序中通过一个循环,测试每一个字符是不是数字,当且仅当所有分量全为数字时,该循环是flag返回真,最后根据其值判断即是
不用ASCll码了,直接拿字符与'0'和'9'比较,例如: a>'0'&& a<'9',a为一个字符。
根据ASCII字符表,我是忘记了,每一个字符都是有值的,你看看0-9的值是多少,输入的每一个字符检查是不是在这个范围,在就是数字,不在就不是数字然后报错。