std:: memcmp
|
Défini dans l'en-tête
<cstring>
|
||
|
int
memcmp
(
const
void
*
lhs,
const
void
*
rhs,
std::
size_t
count
)
;
|
||
Réinterprète les objets pointés par lhs et rhs comme des tableaux de unsigned char et compare les premiers count octets de ces tableaux. La comparaison est effectuée de manière lexicographique.
Le signe du résultat est le signe de la différence entre les valeurs de la première paire d'octets (tous deux interprétés comme unsigned char ) qui diffèrent dans les objets comparés.
Table des matières |
Paramètres
| lhs, rhs | - | pointeurs vers les tampons de mémoire à comparer |
| count | - | nombre d'octets à examiner |
Valeur de retour
Valeur négative si le premier octet différent (réinterprété en tant que unsigned char ) dans lhs est inférieur à l'octet correspondant dans rhs .
0 si tous les count octets de lhs et rhs sont égaux.
Valeur positive si le premier octet différent dans lhs est supérieur à l'octet correspondant dans rhs .
Notes
Cette fonction lit les
représentations d'objets
, pas les valeurs des objets, et n'est généralement significative que pour les objets trivialement copiables sans remplissage. Par exemple,
memcmp()
entre deux objets de type
std::string
ou
std::vector
ne comparera pas leur contenu,
memcmp()
entre deux objets de type
struct
{
char
c
;
int
n
;
}
comparera les octets de remplissage dont les valeurs peuvent différer lorsque les valeurs de
c
et
n
sont identiques, et même s'il n'y avait pas d'octets de remplissage, le
int
serait comparé sans tenir compte de l'endianité.
Exemple
#include <cstring> #include <iostream> void demo(const char* lhs, const char* rhs, std::size_t sz) { std::cout << std::string(lhs, sz); const int rc = std::memcmp(lhs, rhs, sz); if (rc < 0) std::cout << " precedes "; else if (rc > 0) std::cout << " follows "; else std::cout << " compares equal to "; std::cout << std::string(rhs, sz) << " in lexicographical order\n"; } int main() { char a1[] = {'a', 'b', 'c'}; char a2[sizeof a1] = {'a', 'b', 'd'}; demo(a1, a2, sizeof a1); demo(a2, a1, sizeof a1); demo(a1, a1, sizeof a1); }
Sortie :
abc precedes abd in lexicographical order abd follows abc in lexicographical order abc compares equal to abc in lexicographical order
Voir aussi
|
compare deux chaînes de caractères
(fonction) |
|
|
compare un certain nombre de caractères de deux chaînes
(fonction) |
|
|
Documentation C
pour
memcmp
|
|