比较不同符号的整数时出错

时间:2015-07-29 19:17:00

标签: c++

我在2个程序中有两个非常相似的功能,如下所示。

/*
 * Function: isalphaString
 * Usage: isalphaString(str);
 * ----------------------------
 * Judge if all characters in the string is alpha.
 */
bool isalphaString(string str) {
    for (int i = 0; i < str.size(); i++) {
        if (! isalpha(str[i]))
            return false;
    }
    return true;
}

第二个功能:

bool containsNonAlpha(string boardText) {
    for (int i = 0; i < boardText.size(); i++) {
        if (!isalpha(boardText[i])) {
            return true;
        }
    }
    return false;
}

但获得两种不同的编译结果。第一个我没有编译警告,但第二个我收到警告:&#34;比较不同符号的整数&#34; 。不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

您无法将intstd::string::size_type进行比较,您需要更改此行:

for (int i = 0; i < boardText.size(); i++)

为:

for (string::size_type i = 0; i < boardText.size(); i++)

altought你可以在 C ++ 11 中使用更简单的范围循环:

for(char &c : boardText) {
    check_if_alpha(c);
}