std:: memcmp
|
Definido en el encabezado
<cstring>
|
||
|
int
memcmp
(
const
void
*
lhs,
const
void
*
rhs,
std::
size_t
count
)
;
|
||
Reinterpreta los objetos apuntados por lhs y rhs como arreglos de unsigned char y compara los primeros count bytes de estos arreglos. La comparación se realiza lexicográficamente.
El signo del resultado es el signo de la diferencia entre los valores del primer par de bytes (ambos interpretados como unsigned char ) que difieren en los objetos siendo comparados.
Contenidos |
Parámetros
| lhs, rhs | - | punteros a los búferes de memoria a comparar |
| count | - | número de bytes a examinar |
Valor de retorno
Valor negativo si el primer byte diferente (reinterpretado como unsigned char ) en lhs es menor que el byte correspondiente en rhs .
0 si todos los count bytes de lhs y rhs son iguales.
Valor positivo si el primer byte diferente en lhs es mayor que el byte correspondiente en rhs .
Notas
Esta función lee
representaciones de objetos
, no los valores del objeto, y típicamente solo tiene sentido para objetos trivialmente copiables que no tienen relleno. Por ejemplo,
memcmp()
entre dos objetos de tipo
std::string
o
std::vector
no comparará sus contenidos,
memcmp()
entre dos objetos de tipo
struct
{
char
c
;
int
n
;
}
comparará los bytes de relleno cuyos valores pueden diferir cuando los valores de
c
y
n
son los mismos, e incluso si no hubiera bytes de relleno, el
int
se compararía sin tener en cuenta el endianness.
Ejemplo
#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); }
Salida:
abc precedes abd in lexicographical order abd follows abc in lexicographical order abc compares equal to abc in lexicographical order
Véase también
|
compara dos cadenas
(función) |
|
|
compara un número determinado de caracteres de dos cadenas
(función) |
|
|
Documentación de C
para
memcmp
|
|