En utilisant le moins que l'opérateur de comparaison de chaînes de caractères

Je suis en suivant un tutoriel de C++ et de regarder les chaînes et les surcharges avec des opérateurs tels que +=, ==, != etc, ont actuellement une simple instruction si

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

mais, comment cela fonctionne, et comment le programme de décider quelle chaîne est supérieure à une autre?
en regardant autour, j'ai trouvé un modèle de base decleration:

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

est-ce à définir comment < œuvres? si oui, que dire /faire?

aussi faire les opérateurs suivants ont pas de sens pour les chaînes? - = * =

tous les conseils sont grandement appréciés!

Depuis std::string est en fait un typedef pour std::basic_string<char, std::char_traits<char>, std::allocator<char>>, en particulier l'instanciation de ce modèle de fonction est bool std::operator<(const std::string&, const std::string&);, qui est sans doute appelé par votre s1 < s2 et s2 < s1 expressions.

OriginalL'auteur Dmist | 2012-12-11