bonjour tout le monde
merci de bien m'expliquer comment comparer deux chaines en vc++
exemple
if (eleve[1].nom>eleve[2].nom) ...
le resultat est toujours false meme si le premier nom est plus grand que le deuxieme
merci beaucoup
bonjour tout le monde
merci de bien m'expliquer comment comparer deux chaines en vc++
exemple
if (eleve[1].nom>eleve[2].nom) ...
le resultat est toujours false meme si le premier nom est plus grand que le deuxieme
merci beaucoup
T'entends quoi par comparer deux chaines ?
Comparer leur taille ? Comparer par ordre alphabetique ?
C'est quoi tes chaines ? un char* ? un CString ? un std::string ?
Si tu utilise std::string, ta comparaison devrait etre ok. Si tu ne l'utilise pas, je te recommande de le faire, c'est standard et ca evite bien des erreurs.
Si tu utilise des char* ou des char[], tu peux comparer des chaines avec strcmp.
Si tu veux comparer leur taille alors pense bien à comparer leur... taille, et non leur contenu.le resultat est toujours false meme si le premier nom est plus grand que le deuxieme
Salut,
en passant si tu fais ceci :
nom1 == nom2 vaudra toujours false puisque tu compares l'Adresse des pointeurs et non le contenu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 const char* nom1 = "toto"; const char* nom2 = "toto"; if(nom1 == nom2) { //Do something }
Comme dis plus haut, utilise strcmp ou mieux, std::string qui a un operateur== redefini specialement pour ca.
XXiemeciel
La question ne porte pas sur == mais sur >Envoyé par xxiemeciel
C'est quel genre de comparaison ? Par ordre alphabetique ?Envoyé par voider
J'ai regardé dans la doc mais ça m'avance pas a grand chose
Envoyé par operator>
ça doit utiliser la locale courante pour faire la comparaison
la quoi ??Envoyé par loufoque
salut qKabuto,
effectivement je n'avait pas fait attention au > au lieu du == mais ca ne change rien.
std::string a la methode length si il veut comparer la taille de ces string ensuite si il veut faire autre chose alors il devrait preciser. Il me semble qu'il est meme possible de comparer l'ordre alphabetique.
XXiemeciel
En effet ça revient au même (on compare dans les deux cas les adresses des chaines de caracteres au lieu de comparer leur contenu)
Avec l'operateur operator> par exemple ?Envoyé par xxiemeciel
Salut,
Effectivement, les operateur <, > , <= et >= compare les string lexicographiquement . Ainsi les cas suivant seront tous true :
tu peux meme utiliser la function compare pour comparer seulement des moceaux de tes strings.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 std::string("aaaa") < std:string("bbbb"); std::string("aaaa") < std:string("abba"); std::string("aaaa") < std:string("aaaaaaaa");
XXiemeciel
C'est cool ça ^^
Merci du tuyau ^^
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager