isalpha() 函数为字符串中的字符返回 false

isalpha() function returns false for character in string

本文关键字:字符 返回 false 字符串 函数 isalpha      更新时间:2023-10-16

我试图通过使用预定义的函数isalpha()检查字符串中的每个字符来计算字符串中的每个字符foo

#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

有人可以向我解释为什么以及如何解决问题以检查给定字符是否为字母

isalpha的返回类型是 int ,而不是 bool(它来自 C)。检查失败时返回 0,成功时返回非零值。请注意,在这种情况下,它不必返回 1。

inttrue进行比较会将true提升为整数 1。然后,对于 1 以外的整数,比较失败。

切勿通过与truefalse进行比较来检查逻辑值 - 而是依赖于值或隐式转换:

if ( isalpha(foo[i]) )
{
  count++;
}

现场示例

>isalpha()返回一个int。您应该检查它是否返回与 0 不同的值。