Помогите найти ошибку в коде. Два практически одинаковых алгоритма, один работает второй нет. С++

Задача: Найти наибольшее и наименьшее слово в массиве char.

Часть с поиском самого большого слова работает, однако такая же часть, но с поиском малейшего не работает. Компилятор не выдает ошибок. Проблема в том, что почему-то слово не сохраняется в смену min_word.

#include <iostream>
#include <string>

using namespace std;
int const SIZE = 100;

int main()
{
    char* str = new char[SIZE];
    cin.getline(str, SIZE);


    string now_word = "";
    string max_word = "";
    string min_word = "";

    for (int i = 0; i < strlen(str); i++) 
    {
        
        if (str[i] != ' ') 
        {
            now_word += str[i];
        }
        else
        {
            now_word = "";
        }
        if (now_word.size() > max_word.size()) 
        {
            max_word = now_word;
        }
    }
    min_word = max_word;
    for (int i = 0; i < strlen(str); i++)
    {
        if (str[i] != ' ')
        {
            now_word += str[i];
        }
        else
        {
            now_word = "";
        }
        if (now_word.size() < min_word.size())
        {
            min_word = now_word;
        }
    }

    cout << " The biggest word is ( " << max_word << " )\n";
    cout << " The smallest word is ( " << min_word << " )\n";

    return 0;
}

Ответы (1 шт):

Автор решения: Danis

Когда программа доходить до пробела то вы задаёте now_word равен пустой строке, а длина пустой строки равна нулю и в min_word находится "", и далее условие now_word.size() < min_word.size() ни разу не выполняется

Я бы сделал так:

    for (int i = 0; i < strlen(str); i++)
    {
        if (str[i] != ' ')
        {
            now_word += str[i];
        }
        else
        {
            if (now_word.size() < min_word.size())
            {
                min_word = now_word;
            }
            now_word = "";
       } 
→ Ссылка