名稱空間
變體
操作

std::wmemcmp

來自 cppreference.com
< cpp‎ | string‎ | wide
在標頭檔案 <cwchar> 中定義
int wmemcmp( const wchar_t* lhs, const wchar_t* rhs, std::size_t count );

比較 lhsrhs 指向的寬字元陣列的前 count 個寬字元。比較按字典序進行。

結果的符號是所比較陣列中第一個不同寬字元對的值之間的差的符號。

如果 count 為零,函式不執行任何操作。

目錄

[編輯] 引數

lhs, rhs - 指向要比較的寬字元陣列的指標
count - 要檢查的寬字元數

[編輯] 返回值

如果 lhs 中第一個不同寬字元的值小於 rhs 中相應寬字元的值,則返回負值:lhs 在字典序上優先於 rhs

如果 lhsrhs 的所有 count 個寬字元都相等,則返回 0

如果 lhs 中第一個不同寬字元的值大於 rhs 中相應寬字元的值,則返回正值:rhs 在字典序上優先於 lhs

[編輯] 注意

此函式不區分割槽域設定,也不關心它檢查的 wchar_t 物件的值:空字元和無效寬字元也會被比較。

[編輯] 示例

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

可能的輸出

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

[編輯] 參閱

比較兩個寬字串
(函式) [編輯]
比較兩個緩衝區
(函式) [編輯]
比較兩個寬字串中的一定數量的字元
(函式) [編輯]
C 文件 用於 wmemcmp