Namespaces
Variants

std:: wmemcmp

From cppreference.net
Défini dans l'en-tête <cwchar>
int wmemcmp ( const wchar_t * lhs, const wchar_t * rhs, std:: size_t count ) ;

Compare les premiers count caractères larges des tableaux de caractères larges 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 qu'elle examine : les caractères nuls ainsi que les caractères larges non valides sont également comparés.

Exemple

#include <clocale>
#include <cwchar>
#include <iostream>
#include <locale>
#include <string>
void demo(const wchar_t* lhs, const wchar_t* rhs, std::size_t sz)
{
    std::wcout << std::wstring(lhs, sz);
    int rc = std::wmemcmp(lhs, rhs, sz);
    if (rc == 0)
        std::wcout << " se compare égal à ";
    else if (rc < 0)
        std::wcout << " précède ";
    else if (rc > 0)
        std::wcout << " suit ";
    std::wcout << std::wstring(rhs, sz) << " dans l'ordre lexicographique\n";
}
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout.imbue(std::locale("en_US.utf8"));
    wchar_t a1[] = {L'α',L'β',L'γ'};
    constexpr std::size_t sz = sizeof a1 / sizeof *a1;
    wchar_t a2[sz] = {L'α',L'β',L'δ'};
    demo(a1, a2, sz);
    demo(a2, a1, sz);
    demo(a1, a1, sz);
}

Sortie possible :

αβγ précède αβδ dans l'ordre lexicographique
αβδ suit αβγ dans l'ordre lexicographique
αβγ se compare égal à αβγ dans l'ordre lexicographique

Voir aussi

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