返回最短的字符串

时间:2014-10-21 18:35:27

标签: c++ string string-length

我试图编写一个函数,它将从vector<string>返回最短的字符串:

// Find the shortest string.
string shortestString(vector<string> v) {
    string shortest;
    int shortss = 0;
    int i = 0;
    for (string s : v) {
            if (i = 0) {
            shortss = s.length();
            shortest = s;
            i++;
        }
        else if (s.length() < shortss) {
            shortss = s.length();
            shortest = s;
        }
    }
    return shortest;
}

IDK,如果我犯了一些愚蠢的错误,但它什么也没有返回。 这是我的main()

int main() {
    vector<string> words = { "a", "ab", "abc" };
    string shor = shortestString(words);
    cout << shor;
}

什么都没打印出来。我做错了什么?

2 个答案:

答案 0 :(得分:3)

您也可以使用STL算法来执行此操作。

smin = *std::min_element(v.begin(), v.end(), 
                     [] (const std::string& s1, const std::string& s2) { 
                         return s1.length() < s2.length(); }
                     );

答案 1 :(得分:2)

本声明:

        if (i = 0) {

应该是

        if (i == 0) {

使用单个等于=,它是赋值语句,结果是分配的值。因此,它不会测试i以查看它是否为零,它会将0分配给i,然后不运行if阻止。