Comparer les chaînes lexicographiquement
J'ai pensé que si j'ai utilisé des opérateurs tels que ">" et "<" en c++ pour comparer des chaînes, ces permettrait de les comparer de manière lexicographique, le problème est que cela ne fonctionne que parfois, dans mon ordinateur.
Par exemple
if("aa" > "bz") cout<<"Yes";
Cette impression sera rien, et c'est ce dont j'ai besoin, mais Si je tape
if("aa" > "bzaa") cout<<"Yes";
Cette impression sera "Oui", pourquoi est-ce arrivé? Ou est-il un autre moyen que je devrais utiliser pour comparer des chaînes de manière lexicographique?
source d'informationauteur slugo
Vous devez vous connecter pour publier un commentaire.
Comparant
std::string
-s comme ça sera travail. Cependant, vous êtes en comparant les littéraux de chaîne. Pour faire la comparaison que vous voulez initialiser un std::string avec eux ou de les utiliser strcmp:C'est le style c++ solution pour que.
Ou alternativement:
EDIT(merci à Konrad Rudolph commentaire): en fait, dans la première version de l'un des opérandes doivent être convertis explicite:
Sera de nouveau fonctionner comme prévu.
Vous de comparer des "primitifs" des chaînes, qui sont de type
char const *
.Ce qui suit est essentiellement équivalent à votre exemple:
C'est en comparant les pointeurs (les adresses mémoire des cordes), pas le contenu.
@izomorphius a suggéré quelques bonnes solutions.