我试图通过使用预定义函数foo
isalpha()
中的每个字符来计算字符串中的字母数
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
string foo = "aaaaaaa1";
int count=0;
for (int i=0;i<foo.length();i++)
{
if ( isalpha(foo[i]) == true)
{
count++;
}
}
cout<<count;
system("PAUSE");
}
预期产出:
7
当前输出:
0
错误是function isalpha is not returning true for alphabetic
,
有人可以向我解释为什么以及如何解决问题以检查给定字符是否是字母
答案 0 :(得分:12)
isalpha
的返回类型为int
,而非bool
(来自C)。检查失败时返回0,成功时返回非零值。请注意,在这种情况下,它不必返回1。
将int
与true
进行比较会将true
提升为整数1.然后,对于1以外的整数,比较失败。
您永远不应该通过与true
或false
进行比较来检查逻辑值 - 而是依赖于值或隐式转换:
if ( isalpha(foo[i]) )
{
count++;
}
答案 1 :(得分:9)
isalpha()
会返回int
。您应该检查它是否返回与0
不同的值。