c++ - C++为什么我在int和str.length()之间进行的比较不起作用?

标签 c++ string-length

我正在将名称数组发送到一个函数,该函数应该计算每个名称的长度,然后将最大的一个作为字符数发送回去。我对longest和names [i] .length()的比较从来都不是真的。我将最长的初始化为-1,所以名字应该用该名称中的字符长度替换-1,但是在函数结尾时,它返回的最长的是我的初始值-1

#include <iostream>
#include <string>
using namespace std;

int findLongestName(string names[], int numNames);

int main() {
   string names[25] {"Bob Hope", "Steve Nice", "Mary Jane", "James Higgenbothem", "Ace Blue"};
   int numNames = 5;
   int longName;

   longName = findLongestName(names, numNames);
   cout << "Longest name is " << longName << " characters.\n";

   system("PAUSE");
   return 0;
}

int findLongestName(string names[], int numNames) {
    int longest = -1;

    for (int i = 0; i < numNames; i++) {
        if (names[i].length() > longest) {
            longest = names[i].length();
        }
    }

    return longest;
}

有人可以看一下并解释我做错了什么吗?我应该(希望)从函数中获得18詹姆斯姆·希根博特姆的名字。

最佳答案

问题在于数据类型names[i].length()返回unsigned int。比较-1names[i].length()总是会得到false

int findLongestName(string names[], int numNames) {
    unsigned int longest = 0;

    for (int i = 0; i < numNames; i++) {
        if (names[i].length() > longest) {
            longest = names[i].length();
        }
    }

    return longest;
}

关于c++ - C++为什么我在int和str.length()之间进行的比较不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60911329/

相关文章:

使用指针算术编码字符串长度函数

c - 为什么这两个看似相同的声明会导致不同的字符串长度?

c++ - 将 Unicode 字符串作为字符循环

Excel公式查找单元格中最短的字符串/两位数字

c++ - 创建了许多 CCSprit,但触发 ccTouchBegan 时总是给出最后一个

c++ - 在 C++ 中,生成临时类类型的表达式可以归入哪些类别(左值、右值、xvalue 等)?

c++ - 如何在 C++ 中编译位于不同文件中的模板?

java - Kotlin/Java - 如何识别全角字符?

c++ - 访问 getter 的真正底层类型?

c++ - vector 索引的 uintmax_t