Подтвердить что ты не робот

Использование оператора меньше, чем сравнения для строк

Я следую учебному курсу для С++ и смотрю на строки и перегружает с операторами, такими как + =, ==,!= и т.д., в настоящее время имеет простой оператор if

if(s1 < s2)
    cout << s2 <<endl;
else
  if(s2 < s1)
    cout << s1 << endl;
  else
    cout << "Equal\n";

но как это работает, и как программа определяет, какая строка больше другой? Оглядываясь вокруг, я нашел базовое объявление шаблона:

template<class charT, class traits, class Allocator>
  bool operator< ( const basic_string<charT,traits,Allocator>& lhs,
                const basic_string<charT,traits,Allocator>& rhs );

определяет, как < работает? если да, то что означает /do?

также могут ли следующие операторы иметь какое-либо значение для строк? - = и * =

любой совет приветствуется!

4b9b3361

Ответ 1

Менее чем оператор в строках делает лексикографическое сравнение строк. Это сравнивает строки так же, как они будут перечислены в порядке словаря, обобщенные для работы с строками с небуквенными символами.

Например:

"a" < "b"
"a" < "ab"
"A" < "a"             (Since A has ASCII value 65; a has a higher ASCII value)
"cat" < "caterpillar"

Для получения дополнительной информации см. алгоритм std::lexicographical_compare, который обычно вызывает оператор меньшего размера.

Что касается -= и *=, ни один из этих операторов не определен в строках. Единственными "арифметическими" операторами являются + и +=, которые выполняют конкатенацию строк.

Надеюсь, это поможет!