Namensräume
Varianten
Aktionen

wmemcmp

Von cppreference.com
< c‎ | string‎ | wide
 
 
 
 
Definiert in Header <wchar.h>
int wmemcmp( const wchar_t* lhs, const wchar_t* rhs, size_t count );
(seit C95)

Vergleicht die ersten count Weitzeichen (wide characters) der Wide-Character-Arrays (oder kompatible Ganzzahltypen), auf die von lhs und rhs gezeigt wird. Der Vergleich erfolgt lexikographisch.

Das Vorzeichen des Ergebnisses ist das Vorzeichen der Differenz zwischen den Werten des ersten Paares von Weitzeichen, die sich in den verglichenen Arrays unterscheiden.

Wenn count Null ist, tut die Funktion nichts.

Inhalt

[edit] Parameter

lhs, rhs - Zeiger auf die zu vergleichenden Weitzeichen-Arrays
zählt - Anzahl der zu untersuchenden Weitzeichen

[edit] Rückgabewert

Negativer Wert, wenn der Wert des ersten unterschiedlichen Weitzeichens in lhs kleiner ist als der Wert des entsprechenden Weitzeichens in rhs: lhs geht rhs in lexikographischer Reihenfolge voraus.

0, wenn alle count Weitzeichen von lhs und rhs gleich sind.

Positiver Wert, wenn der Wert des ersten unterschiedlichen Weitzeichens in lhs größer ist als der Wert des entsprechenden Weitzeichens in rhs: rhs geht lhs in lexikographischer Reihenfolge voraus.

[edit] Hinweise

Diese Funktion ist nicht gebietssensitiv und achtet nicht auf die Werte der wchar_t-Objekte, die sie prüft: Null-Werte sowie ungültige Weitzeichen werden ebenfalls verglichen.

[edit] Beispiel

#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);
}

Ausgabe

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

[edit] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.29.4.4.5 Die Funktion wmemcmp (p: TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.29.4.4.5 Die Funktion wmemcmp (p: TBD)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.29.4.4.5 Die Funktion wmemcmp (p: 435)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.24.4.4.5 Die Funktion wmemcmp (p: 381)

[edit] Siehe auch

(C95)
vergleicht zwei breite Zeichenketten
(Funktion) [bearbeiten]
vergleicht zwei Puffer
(Funktion) [bearbeiten]
vergleicht eine bestimmte Anzahl von Zeichen aus zwei breiten Zeichenketten
(Funktion) [bearbeiten]
C++ Dokumentation für wmemcmp