Как взять первое слово в лексикографическом порядке?

Нужна помощь в задании. Помогите написать код. Строка S длиной не более 100000 символов содержит символы латинского алфавита и пробелы. Необходимо найти слово наибольшей длины. Если таких слов несколько, взять первое в лексикографическом порядке.

Вот код

#include <iostream>
#include <sstream>

int main()
{   setlocale(0, "");

    std::string s = "Помогите напейсать код.";
    std::string s2, s3;
    std::istringstream iss(s);

    int max = 0;
    while(iss >> s2)
    {   if(s2.size() > max)
        {   max = s2.size();
            s3 = s2;
        }
    }

    std::cout << "Исходная строка    : " << s  << "\n";
    std::cout << "Самое длинное слово: " << s3 << "\n";

    std::cin.get();
    return 0;
}

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

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

Так вы же почти все сделали - осталось выбрать из равных лексикографически меньшее.

if (s2.size() > max)
{   
    max = s2.size();
    s3 = s2;
} else if (s2.size() == max && s2 < s3)
{
    s3 = s2;
}
→ Ссылка