Namespaces
Variants

wmemcmp

From cppreference.net
< c ‎ | string ‎ | wide
Défini dans l'en-tête <wchar.h>
int wmemcmp ( const wchar_t * lhs, const wchar_t * rhs, size_t count ) ;
(depuis C95)

Compare les premiers count caractères larges des tableaux de caractères larges (ou de types entiers compatibles) pointés par lhs et rhs . 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 de caractères larges qui diffèrent dans les tableaux comparés.

Si count est nul, la fonction ne fait rien.

Table des matières

Paramètres

lhs, rhs - pointeurs vers les tableaux de caractères larges à comparer
count - nombre de caractères larges à examiner

Valeur de retour

Valeur négative si la valeur du premier caractère large différent dans lhs est inférieure à la valeur du caractère large correspondant dans rhs : lhs précède rhs dans l'ordre lexicographique.

0 si tous count caractères larges de lhs et rhs sont égaux.

Valeur positive si la valeur du premier caractère large différent dans lhs est supérieure à la valeur du caractère large correspondant dans rhs : rhs précède lhs dans l'ordre lexicographique.

Notes

Cette fonction n'est pas sensible aux paramètres régionaux et ne prête aucune attention aux valeurs des wchar_t objets qu'elle examine : les caractères nuls ainsi que les caractères larges non valides sont également comparés.

Exemple

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
void demo(const wchar_t* lhs, const wchar_t* rhs, size_t sz)
{
    for (size_t n = 0; n < sz; ++n)
        putwchar(lhs[n]);
    int rc = wmemcmp(lhs, rhs, sz);
    if (rc == 0)
        wprintf(L" compares equal to ");
    else if(rc < 0)
        wprintf(L" precedes ");
    else if(rc > 0)
        wprintf(L" follows ");
    for (size_t n = 0; n < sz; ++n)
        putwchar(rhs[n]);
    wprintf(L" in lexicographical order\n");
}
int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
    wchar_t a1[] = {L'α',L'β',L'γ'};
    wchar_t a2[] = {L'α',L'β',L'δ'};
    size_t sz = sizeof a1 / sizeof *a1;
    demo(a1, a2, sz);
    demo(a2, a1, sz);
    demo(a1, a1, sz);
}

Sortie :

αβγ precedes αβδ in lexicographical order
αβδ follows αβγ in lexicographical order
αβγ compares equal to αβγ in lexicographical order

Références

  • Norme C23 (ISO/IEC 9899:2024):
  • 7.29.4.4.5 La fonction wmemcmp (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018):
  • 7.29.4.4.5 La fonction wmemcmp (p: TBD)
  • Norme C11 (ISO/IEC 9899:2011):
  • 7.29.4.4.5 La fonction wmemcmp (p: 435)
  • Norme C99 (ISO/IEC 9899:1999) :
  • 7.24.4.4.5 La fonction wmemcmp (p: 381)

Voir aussi

(C95)
compare deux chaînes larges
(fonction)
compare deux tampons
(fonction)
(C95)
compare un certain nombre de caractères de deux chaînes larges
(fonction)
Documentation C++ pour wmemcmp