簡體   English   中英

isalpha()函數為string中的字符返回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。

一個比較inttrue促進true為整數1。然后比較為大於1以外的整數失敗。

您永遠不應該通過比較truefalse檢查邏輯值 - 依賴於值或隱式轉換:

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

實例

isalpha()返回一個int 您應該檢查它是否返回不同於0的值。

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM