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

Com*_*erd 2 c++ string debugging

我试图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");
}
Run Code Online (Sandbox Code Playgroud)

预期产量:

7

当前输出:

0

错误是function isalpha is not returning true for alphabetic,

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

Rei*_*ica 12

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

比较一个inttrue促进true为整数1.然后比较为大于1以外的整数失败.

您永远不应该通过比较truefalse- 依赖于值或隐式转换来检查逻辑值:

if ( isalpha(foo[i]) )
{
  count++;
}
Run Code Online (Sandbox Code Playgroud)

实例


And*_*rea 9

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

  • 无需明确比较它是否返回零以外的其他内容.只需检查"truthy"中的返回. (2认同)