思考:通过对字符指针
char * s
的位运算,可以遍历整个字符数组,while循环的三个条件,当循环未到达指针char* s
指向的字符数组的结尾(此时的*s
为真,且后两个条件*s>='0' && *s<='9'
未满足时,整个条件为假,while跳出循环进行下面的if判断,此时*s
为真,代表该字符串的字符不是纯数字.
当后两个条件*s>='0' && *s<='9'
一直满足时,循环到达字符指针char* s
所指向的字符数组的结尾,此时继续s++
,则*s
为假,跳出while循环,该字符串的字符是纯数字的.
函数代码如下:
bool isDigitStr(QString str)
{
QByteArray BArray = str.toLatin1();//QString 转换为 char*
const char *s = BArray.data();
while(*s && *s>='0' && *s<='9'){ //通过while循环,从第一位开始判断字符串的单个字符
s++; //位操作
}
if (*s) //不是纯数字,如果 *s 的指向位置 在该字符数组的范围内,则 *s 为真
return false;
else //纯数字
return true;
}