c++ 比较不同符号的整数时发出警告

brccelvz  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(155)

我有两个非常相似的功能在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;
}

但是得到了两个不同的编译结果。第一个我没有编译警告,但是第二个我收到了一个警告:“不同符号的整数的比较”。不确定为什么会发生这种情况。

r6hnlfcb

r6hnlfcb1#

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

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

致:

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

虽然你可以在 * C++11 * 中使用一个范围循环,这要简单得多:

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

相关问题