wmemcmp
|
ヘッダーで定義
<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 より辞書順で前に来ることを示す。
0 lhs と rhs の全てのワイド文字が等しい場合。
最初に異なるワイド文字の値が 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)
|
2つのワイド文字列を比較する
(関数) |
|
2つのバッファを比較する
(関数) |
|
|
(C95)
|
2つのワイド文字列から指定された文字数を比較する
(関数) |
|
C++ documentation
for
wmemcmp
|
|