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
返回类型isalpha是int,bool它不是(它来自C).检查失败时返回0,成功时返回非零值.请注意,在这种情况下不必返回1.
比较一个int到true促进true为整数1.然后比较为大于1以外的整数失败.
您永远不应该通过比较true或false- 依赖于值或隐式转换来检查逻辑值:
if ( isalpha(foo[i]) )
{
count++;
}
Run Code Online (Sandbox Code Playgroud)