名稱空間
變體
操作

wmemcmp

來自 cppreference.com
< c‎ | string‎ | wide
在標頭檔案 <wchar.h> 中定義
int wmemcmp( const wchar_t* lhs, const wchar_t* rhs, size_t count );
(自 C95 起)

比較 lhsrhs 所指向的寬字元(或相容的整型)陣列的前 count 個寬字元。比較以字典序進行。

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

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

目錄

[編輯] 引數

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

[編輯] 返回值

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

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

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

[編輯] 注意

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

[編輯] 示例

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

輸出

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

[編輯] 參考

  • C23 標準 (ISO/IEC 9899:2024)
  • 7.29.4.4.5 wmemcmp 函式 (p: TBD)
  • C17 標準 (ISO/IEC 9899:2018)
  • 7.29.4.4.5 wmemcmp 函式 (p: TBD)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.29.4.4.5 wmemcmp 函式 (p: 435)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.24.4.4.5 wmemcmp 函式 (p: 381)

[編輯] 另請參閱

(C95)
比較兩個寬字串
(函式) [編輯]
比較兩個緩衝區
(函式) [編輯]
比較兩個寬字串中的一定數量的字元
(函式) [編輯]
C++ documentation for wmemcmp