Namensräume
Varianten
Aktionen

std::wmemcmp

Von cppreference.com
< cpp‎ | string‎ | wide
 
 
 
 
Definiert in Header <cwchar>
int wmemcmp( const wchar_t* lhs, const wchar_t* rhs, std::size_t count );

Vergleicht die ersten count Weitzeichen der Wide-Character-Arrays, 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

[bearbeiten] Parameter

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

[bearbeiten] Rückgabewert

Negativer Wert, wenn der Wert des ersten sich unterscheidenden 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 sich unterscheidenden Weitzeichens in lhs größer ist als der Wert des entsprechenden Weitzeichens in rhs: rhs geht lhs in lexikographischer Reihenfolge voraus.

[bearbeiten] Hinweise

Diese Funktion ist nicht lokalsensitiv und beachtet die Werte der wchar_t-Objekte, die sie untersucht, nicht: Nullzeichen sowie ungültige Weitzeichen werden ebenfalls verglichen.

[bearbeiten] Beispiel

#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 << " compares equal to ";
    else if (rc < 0)
        std::wcout << " precedes ";
    else if (rc > 0)
        std::wcout << " follows ";
    std::wcout << std::wstring(rhs, sz) << " in lexicographical order\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);
}

Mögliche Ausgabe

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

[bearbeiten] Siehe auch

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