[英]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
的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.