isalpha() 函数为字符串中的字符返回 false
isalpha() function returns false for character in string
我试图通过使用预定义的函数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。
将int
与true
进行比较会将true
提升为整数 1。然后,对于 1 以外的整数,比较失败。
切勿通过与true
或false
进行比较来检查逻辑值 - 而是依赖于值或隐式转换:
if ( isalpha(foo[i]) )
{
count++;
}
现场示例
>isalpha()
返回一个int
。您应该检查它是否返回与 0
不同的值。
相关文章:
- 为什么 Serial.println(<char[]>);返回随机字符?
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何返回/复制unique_ptr<无符号字符[]>的值?
- 在函数中返回无符号字符数组,但不返回指针
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- std::stringstream 返回字符 *
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 为什么我的字符* 复印机返回不同的东西?
- strcmp 对于相等的字符序列返回 false
- 如何在数组中返回负字符?
- 为什么当作为常量字符* 返回时会在此处创建临时字符串?[斯特劳斯特鲁普的书例]
- isalpha() 函数为字符串中的字符返回 false
- 使用 const 指针的 C 样式字符返回不正确的结果
- 字符返回函数指针C++
- 'isprint' 为 Solaris 上的不可打印字符返回 true
- 常量字符* 返回类型
- C++字符返回输出符号
- 无符号字符返回值和+=出现问题
- _带有_O_U8TEXT标志的wsopen_s,向缓冲区、中间字符和4个中间俄语字符返回0.VS2010
- 将常量字符* 返回到字符*,然后更改数据