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
Mieux que SDL : d�couvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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 ^^
Partager