slt,
j'ai un pb dans la compraison des chaines de caracteres avec strcomp (pour deschaine de taille 8, par ex). Pourriez vous m'indiquer un autre moyen pour faire la comparaison
Merci
slt,
j'ai un pb dans la compraison des chaines de caracteres avec strcomp (pour deschaine de taille 8, par ex). Pourriez vous m'indiquer un autre moyen pour faire la comparaison
Merci
salut,
strcomp je connais pas, ni en C, ni en C++
je connais strcmp() en C, et std::string::compare() en C++
Peux tu montrer ton poblème ?
je code en C++ et j'utilise strcmp mais dés fois ça ne fonctionne pas. j'ai vérifié ca en faisant pas à pas
Exactement.
Utilise std::string :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 std::string chaine1 = "Vive la SL"; std::string chaine2 = "voir la FAQ"; if (chaine1 == chaine2) { std::cout << " Ca m'étonnerait" << std::endl; }
Ou si tu veux faire ça à l'ancienne ou que tu préfères les choses compliqués aux choses simples tu peux t'amuser à comparer caractère par caractère dans une boucle.![]()
string::operator== ne fait qu'appeler string::compare, mais c'est vrai que ça peut être + joli si l'on veut comparer des chaines en totalité.
pourquoi ne montres-tu pas ton code ?
en faite dans mon code, j'essaie de comparer des chaines de caracteres en Hexa (ex 01 20 00 ef) je regarde dans le Debbuger mes chaines sont differentes mains strcmp ou "==" me sort que le sont égaux. Je pense que ça viens du faite que je compare des caracteres qui signifient rien en ascii
Oui effectivement, strcmp ne marchera pas pour comparer de tels chaînes. Dans ton exemple, strcmp réussira si les deux chaines commencent par 01 20 00 même si la suite est différente.
Dans de tels cas, oui il faut alors comparer caractère par caractère jusqu'à la fin (alors que strcmp s'arrêtera au premier 00 rencontré).
Comment je peux parcourrir le chaine pour le faire caractere par caractere?
Bah quelque chose comme ça...
Mais bon, on est en C++. Est-ce quelque chose comme ceci pourrait t'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (int i = 0 ; i < size ; i++) if (hex1[i] != hex[i]) return 0; return 1;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 std::ostringstream oss1; oss1 << std::hex << 0xDF0030FE; std::string hex1 = oss1.str(); std::ostringstream oss2; oss2 << std::hex << 0xDF00AABB; std::string hex2 = oss2.str(); assert (hex1 != hex2);
ou alors
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 int val1[8]; int val2[8]; . . . if (equal (val1, val1+8,val2 )) { cout<<"val1 == val2"<<endl; } else { cout<<"val1 != val2"<<endl; }
Y a pas tout simplement "memcmp" ?
![]()
Partager