wmemcmp
來自 cppreference.com
在標頭檔案 <wchar.h> 中定義 |
||
int wmemcmp( const wchar_t* lhs, const wchar_t* rhs, size_t count ); |
(自 C95 起) | |
比較 lhs 和 rhs 所指向的寬字元(或相容的整型)陣列的前 count 個寬字元。比較以字典序進行。
結果的符號是所比較陣列中第一對不同寬字元值之差的符號。
如果 count
為零,函式不執行任何操作。
目錄 |
[編輯] 引數
lhs, rhs | - | 指向要比較的寬字元陣列的指標 |
count | - | 要檢查的寬字元數 |
[編輯] 返回值
如果 lhs 中第一個不同寬字元的值小於 rhs 中相應寬字元的值,則返回負值:lhs 在字典序上優先於 rhs。
如果 lhs 和 rhs 的所有 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) |
比較兩個寬字串 (函式) |
比較兩個緩衝區 (函式) | |
(C95) |
比較兩個寬字串中的一定數量的字元 (函式) |
C++ documentation for wmemcmp
|